[Mesa-dev] [PATCH 5/5] glsl: Fix regression in function out-parameter lvalue detection.

Eric Anholt eric at anholt.net
Tue Apr 24 10:25:06 PDT 2012


When doing the var->assigned change in
f2475ca424f7e001be50f64dafa5700f6603d684, I overzealously indented the
second block of code into the "if (var)" test.  Revert these blocks to
the way they were before, just taking advantage of "var" to avoid
re-calling variable_referenced().

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49066
---
 src/glsl/ast_function.cpp |   28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/glsl/ast_function.cpp b/src/glsl/ast_function.cpp
index 8bf0ba2..58cf685 100644
--- a/src/glsl/ast_function.cpp
+++ b/src/glsl/ast_function.cpp
@@ -153,21 +153,21 @@ verify_parameter_modes(_mesa_glsl_parse_state *state,
 	 }
 
 	 ir_variable *var = actual->variable_referenced();
-	 if (var) {
-	    if (var->read_only) {
-	       _mesa_glsl_error(&loc, state,
-				"function parameter '%s %s' references the "
-				"read-only variable '%s'",
-				mode, formal->name,
-				actual->variable_referenced()->name);
-	       return false;
-	    } else if (!actual->is_lvalue()) {
-	       _mesa_glsl_error(&loc, state,
-				"function parameter '%s %s' is not an lvalue",
-				mode, formal->name);
-	       return false;
-	    }
+	 if (var)
 	    var->assigned = true;
+
+	 if (var && var->read_only) {
+	    _mesa_glsl_error(&loc, state,
+			     "function parameter '%s %s' references the "
+			     "read-only variable '%s'",
+			     mode, formal->name,
+			     actual->variable_referenced()->name);
+	    return false;
+	 } else if (!actual->is_lvalue()) {
+	    _mesa_glsl_error(&loc, state,
+			     "function parameter '%s %s' is not an lvalue",
+			     mode, formal->name);
+	    return false;
 	 }
       }
 
-- 
1.7.10



More information about the mesa-dev mailing list