ecere/gfx/drivers/OpenGL: Added '0' checks for freeing buffer
authorJerome St-Louis <jerome@ecere.com>
Mon, 21 Dec 2015 21:06:02 +0000 (16:06 -0500)
committerJerome St-Louis <jerome@ecere.com>
Tue, 22 Dec 2015 06:45:22 +0000 (01:45 -0500)
ecere/src/gfx/drivers/OpenGLDisplayDriver.ec

index 81beee2..0adae0f 100644 (file)
@@ -1357,7 +1357,7 @@ public struct GLAB
 
    void free()
    {
-      if(this != null)
+      if(this != null && buffer)
       {
          GLDeleteBuffers(1, this);
          buffer = 0;
@@ -1415,7 +1415,7 @@ public struct GLEAB
 
    void free()
    {
-      if(this != null)
+      if(this != null && buffer)
       {
          GLDeleteBuffers(1, (GLAB *)this);
          buffer = 0;
@@ -1451,13 +1451,17 @@ public void GLDeleteBuffers(int count, GLAB * buffers)
    for(i = 0; i < count; i++)
    {
       uint buffer = buffers[i].buffer;
-      if(buffer == curArrayBuffer)
-         GLBindBuffer(GL_ARRAY_BUFFER_ARB, 0);
-      else if(buffer == curElementBuffer)
-         GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+      if(buffer)
+      {
+         if(buffer == curArrayBuffer)
+            GLBindBuffer(GL_ARRAY_BUFFER_ARB, 0);
+         else if(buffer == curElementBuffer)
+            GLBindBuffer(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
+      }
    }
 #if defined(__ANDROID__) || defined(__ODROID__)
-   glDeleteBuffers(count, (GLuint *)buffers);
+   if(count && buffers[0].buffer)
+      glDeleteBuffers(count, (GLuint *)buffers);
 #else
 #if defined(__WIN32__)
    if(glDeleteBuffersARB)