From a93aa689019cc784bbbfebe635fd7445b66d1e43 Mon Sep 17 00:00:00 2001 From: Brad Davis Date: Tue, 9 Oct 2018 16:42:56 -0700 Subject: [PATCH] Add additional safety checks to gl::Uniform::load --- libraries/gl/src/gl/GLShaders.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/libraries/gl/src/gl/GLShaders.cpp b/libraries/gl/src/gl/GLShaders.cpp index a0d976d727..b7e80fbeb4 100644 --- a/libraries/gl/src/gl/GLShaders.cpp +++ b/libraries/gl/src/gl/GLShaders.cpp @@ -14,14 +14,17 @@ using namespace gl; void Uniform::load(GLuint glprogram, int index) { this->index = index; - const GLint NAME_LENGTH = 256; - GLchar glname[NAME_LENGTH]; - GLint length = 0; - glGetActiveUniform(glprogram, index, NAME_LENGTH, &length, &size, &type, glname); - // Length does NOT include the null terminator - // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml - name = std::string(glname, length); - binding = glGetUniformLocation(glprogram, glname); + if (index > 0) { + static const GLint NAME_LENGTH = 1024; + GLchar glname[NAME_LENGTH]; + memset(glname, 0, NAME_LENGTH); + GLint length = 0; + glGetActiveUniform(glprogram, index, NAME_LENGTH, &length, &size, &type, glname); + // Length does NOT include the null terminator + // https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml + name = std::string(glname, length); + binding = glGetUniformLocation(glprogram, name.c_str()); + } } bool isTextureType(GLenum type) {