Add additional safety checks to gl::Uniform::load

This commit is contained in:
Brad Davis 2018-10-09 16:42:56 -07:00
parent 881f7f0142
commit a93aa68901

View file

@ -14,14 +14,17 @@ using namespace gl;
void Uniform::load(GLuint glprogram, int index) { void Uniform::load(GLuint glprogram, int index) {
this->index = index; this->index = index;
const GLint NAME_LENGTH = 256; if (index > 0) {
GLchar glname[NAME_LENGTH]; static const GLint NAME_LENGTH = 1024;
GLint length = 0; GLchar glname[NAME_LENGTH];
glGetActiveUniform(glprogram, index, NAME_LENGTH, &length, &size, &type, glname); memset(glname, 0, NAME_LENGTH);
// Length does NOT include the null terminator GLint length = 0;
// https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glGetActiveUniform.xhtml glGetActiveUniform(glprogram, index, NAME_LENGTH, &length, &size, &type, glname);
name = std::string(glname, length); // Length does NOT include the null terminator
binding = glGetUniformLocation(glprogram, glname); // 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) { bool isTextureType(GLenum type) {