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);