glsl: Fix linker bug in cross_validate_globals()
authorChad Versace <chad.versace@intel.com>
Wed, 17 Nov 2010 22:34:38 +0000 (14:34 -0800)
committerChad Versace <chad.versace@intel.com>
Thu, 2 Dec 2010 04:40:07 +0000 (20:40 -0800)
Cause linking to fail if a global has mismatching invariant qualifiers.

See https://bugs.freedesktop.org/show_bug.cgi?id=30261

src/glsl/linker.cpp

index cde70ad..576b72a 100644 (file)
@@ -411,6 +411,13 @@ cross_validate_globals(struct gl_shader_program *prog,
                  existing->constant_value =
                     var->constant_value->clone(talloc_parent(existing), NULL);
            }
+
+           if (existing->invariant != var->invariant) {
+              linker_error_printf(prog, "declarations for %s `%s' have "
+                                  "mismatching invariant qualifiers\n",
+                                  mode_string(var), var->name);
+              return false;
+           }
         } else
            variables.add_variable(var);
       }