diff options
author | Chad Versace <chad.versace@intel.com> | 2010-11-17 14:34:38 -0800 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2010-12-17 12:56:40 -0800 |
commit | b2cd388b7953f544bf8669cccfd1fa94d85c7f3c (patch) | |
tree | 04272ea04737d7b10846ecfa7a46ff41a1de01cd | |
parent | bb2cd98e512b9349c8b4dbc4a1959314fecbe6c7 (diff) | |
download | mesa-b2cd388b7953f544bf8669cccfd1fa94d85c7f3c.tar.gz |
glsl: Fix linker bug in cross_validate_globals()
Cause linking to fail if a global has mismatching invariant qualifiers.
See https://bugs.freedesktop.org/show_bug.cgi?id=30261
(cherry picked from commit 7528f143dfb77e3e0486006676e990964392aebf)
-rw-r--r-- | src/glsl/linker.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index fab5344293a..68324665ba5 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -398,6 +398,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->name, var); } |