summaryrefslogtreecommitdiff
path: root/src/mesa/shader
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/shader')
-rw-r--r--src/mesa/shader/prog_uniform.c4
-rw-r--r--src/mesa/shader/shader_api.c10
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)");
}
}