glsl: fix up scoping for parent/children in slang_operation_copy()
authorBrian Paul <brianp@vmware.com>
Wed, 24 Jun 2009 22:25:00 +0000 (16:25 -0600)
committerBrian Paul <brianp@vmware.com>
Fri, 26 Jun 2009 19:16:33 +0000 (13:16 -0600)
This will need more testing, but no regressions seen so far.

src/mesa/shader/slang/slang_compile_operation.c

index 48586c2d96d1cb7a544a156659de43cbc4128319..3e2bdbc91ffa5a79a16fd35dc2f8807c3cf81ab3 100644 (file)
@@ -154,6 +154,15 @@ slang_operation_copy(slang_operation * x, const slang_operation * y)
          return GL_FALSE;
       }
    }
+
+   /* update scoping for children */
+   for (i = 0; i < y->num_children; i++) {
+      if (y->children[i].locals &&
+          y->children[i].locals->outer_scope == y->locals) {
+         z.children[i].locals->outer_scope = z.locals;
+      }
+   }
+
 #if 0
    z.var = y->var;
    z.fun = y->fun;