more bug fixing, error checking
authorBrian <brian@yutani.localnet.net>
Tue, 13 Mar 2007 22:50:24 +0000 (16:50 -0600)
committerBrian <brian@yutani.localnet.net>
Tue, 13 Mar 2007 22:50:24 +0000 (16:50 -0600)
src/mesa/shader/shader_api.c

index b916e75b93296f561de46fd48f8da181b1f1abfc..aab522e292cfad91135b0dfd3815281b796d6dbc 100644 (file)
@@ -912,6 +912,11 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
       }
    }
 
+   if (count < 0) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glUniform(count < 0)");
+      return;
+   }
+
    switch (type) {
    case GL_FLOAT:
    case GL_INT:
@@ -945,13 +950,13 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
           type == GL_INT_VEC2 ||
           type == GL_INT_VEC3 ||
           type == GL_INT_VEC4) {
-         const GLint *iValues = (const GLint *) values;
+         const GLint *iValues = ((const GLint *) values) + k * elems;
          for (i = 0; i < elems; i++) {
             uniformVal[i] = (GLfloat) iValues[i];
          }
       }
       else {
-         const GLfloat *fValues = (const GLfloat *) values;
+         const GLfloat *fValues = ((const GLfloat *) values) + k * elems;
          for (i = 0; i < elems; i++) {
             uniformVal[i] = fValues[i];
          }