Fixed element array buffer name crash

Added missing NULL pointer check

Bug 20676373

Change-Id: Ia99cac8e6abb4157441d8ff1741b5d81981a1270
Reviewed-on: https://swiftshader-review.googlesource.com/3000
Reviewed-by: Nicolas Capens <capn@google.com>
Tested-by: Alexis Hétu <sugoi@google.com>
diff --git a/src/OpenGL/libGLESv2/Context.cpp b/src/OpenGL/libGLESv2/Context.cpp
index 8c44729..e180ae0 100644
--- a/src/OpenGL/libGLESv2/Context.cpp
+++ b/src/OpenGL/libGLESv2/Context.cpp
@@ -721,6 +721,12 @@
     return mState.arrayBuffer.name();

 }

 

+GLuint Context::getElementArrayBufferName() const

+{

+	Buffer* elementArrayBuffer = getCurrentVertexArray()->getElementArrayBuffer();

+	return elementArrayBuffer ? elementArrayBuffer->name : 0;

+}

+

 GLuint Context::getActiveQuery(GLenum target) const

 {

     Query *queryObject = NULL;

@@ -1695,7 +1701,7 @@
     case GL_NUM_SHADER_BINARY_FORMATS:        *params = 0;                                    break;

     case GL_SHADER_BINARY_FORMATS:      /* no shader binary formats are supported */          break;

     case GL_ARRAY_BUFFER_BINDING:             *params = getArrayBufferName();                 break;

-    case GL_ELEMENT_ARRAY_BUFFER_BINDING:     *params = getCurrentVertexArray()->getElementArrayBuffer()->name; break;

+    case GL_ELEMENT_ARRAY_BUFFER_BINDING:     *params = getElementArrayBufferName();          break;

 //	case GL_FRAMEBUFFER_BINDING:            // now equivalent to GL_DRAW_FRAMEBUFFER_BINDING_ANGLE

     case GL_DRAW_FRAMEBUFFER_BINDING_ANGLE:   *params = mState.drawFramebuffer;               break;

     case GL_READ_FRAMEBUFFER_BINDING_ANGLE:   *params = mState.readFramebuffer;               break;

diff --git a/src/OpenGL/libGLESv2/Context.h b/src/OpenGL/libGLESv2/Context.h
index 1d79b7d..7abe86d 100644
--- a/src/OpenGL/libGLESv2/Context.h
+++ b/src/OpenGL/libGLESv2/Context.h
@@ -429,6 +429,7 @@
 	GLuint getActiveQuery(GLenum target) const;

 

     GLuint getArrayBufferName() const;

+	GLuint getElementArrayBufferName() const;

 

     void setEnableVertexAttribArray(unsigned int attribNum, bool enabled);

     void setVertexAttribDivisor(unsigned int attribNum, GLuint divisor);