diff options
Diffstat (limited to 'src/mesa/shader')
-rw-r--r-- | src/mesa/shader/prog_uniform.c | 4 | ||||
-rw-r--r-- | src/mesa/shader/shader_api.c | 10 |
2 files changed, 8 insertions, 6 deletions
diff --git a/src/mesa/shader/prog_uniform.c b/src/mesa/shader/prog_uniform.c index d96a916533..f57df3d86d 100644 --- a/src/mesa/shader/prog_uniform.c +++ b/src/mesa/shader/prog_uniform.c @@ -119,7 +119,7 @@ GLint _mesa_lookup_uniform(const struct gl_uniform_list *list, const char *name) { GLuint i; - for (i = 0; i < list->NumUniforms; i++) { + for (i = 0; list && i < list->NumUniforms; i++) { if (!_mesa_strcmp(list->Uniforms[i].Name, name)) { return i; } @@ -133,7 +133,7 @@ _mesa_longest_uniform_name(const struct gl_uniform_list *list) { GLint max = 0; GLuint i; - for (i = 0; i < list->NumUniforms; i++) { + for (i = 0; list && i < list->NumUniforms; i++) { GLuint len = _mesa_strlen(list->Uniforms[i].Name); if (len > (GLuint)max) max = len; diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index 97edb25400..a005c902e1 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -892,8 +892,10 @@ _mesa_get_uniformfv(GLcontext *ctx, GLuint program, GLint location, struct gl_shader_program *shProg = _mesa_lookup_shader_program(ctx, program); if (shProg) { - if (location < shProg->Uniforms->NumUniforms) { - GLuint progPos, i; + if (shProg->Uniforms && + location >= 0 && location < shProg->Uniforms->NumUniforms) { + GLint progPos; + GLuint i; const struct gl_program *prog = NULL; progPos = shProg->Uniforms->Uniforms[location].VertPos; @@ -915,11 +917,11 @@ _mesa_get_uniformfv(GLcontext *ctx, GLuint program, GLint location, } } else { - _mesa_error(ctx, GL_INVALID_VALUE, "glGetUniformfv(location)"); + _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformfv(location)"); } } else { - _mesa_error(ctx, GL_INVALID_VALUE, "glGetUniformfv(program)"); + _mesa_error(ctx, GL_INVALID_OPERATION, "glGetUniformfv(program)"); } } |