mesa: don't crash in KHR_no_error uniform variants when location == -1
authorTimothy Arceri <tarceri@itsqueeze.com>
Sat, 13 May 2017 05:53:08 +0000 (15:53 +1000)
committerTimothy Arceri <tarceri@itsqueeze.com>
Tue, 16 May 2017 01:53:16 +0000 (11:53 +1000)
From Seciton 7.6 (UNIFORM VARIABLES) of the OpenGL 4.5 spec:

  "If the value of location is -1, the Uniform* commands will
  silently ignore the data passed in, and the current uniform values
  will not be changed.

Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/mesa/main/uniform_query.cpp

index 0e02a764a928ee43fb65bef33c70118dfa3b50f5..79a66a7ac3aadf62ee8cba0a099f429ea7d993c1 100644 (file)
@@ -911,6 +911,15 @@ _mesa_uniform(GLint location, GLsizei count, const GLvoid *values,
 
    struct gl_uniform_storage *uni;
    if (_mesa_is_no_error_enabled(ctx)) {
+      /* From Seciton 7.6 (UNIFORM VARIABLES) of the OpenGL 4.5 spec:
+       *
+       *   "If the value of location is -1, the Uniform* commands will
+       *   silently ignore the data passed in, and the current uniform values
+       *   will not be changed.
+       */
+      if (location == -1)
+         return;
+
       uni = shProg->UniformRemapTable[location];
 
       /* The array index specified by the uniform location is just the