summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/glsl/linker.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp
index f7c178e9677..06aa24e66f5 100644
--- a/src/glsl/linker.cpp
+++ b/src/glsl/linker.cpp
@@ -314,6 +314,14 @@ cross_validate_globals(struct gl_shader_program *prog,
* have an initializer but a later instance does, copy the
* initializer to the version stored in the symbol table.
*/
+ /* FINISHME: This is wrong. The constant_value field should
+ * FINISHME: not be modified! Imagine a case where a shader
+ * FINISHME: without an initializer is linked in two different
+ * FINISHME: programs with shaders that have differing
+ * FINISHME: initializers. Linking with the first will
+ * FINISHME: modify the shader, and linking with the second
+ * FINISHME: will fail.
+ */
existing->constant_value = var->constant_value->clone(NULL);
}
} else