linker: Use foreach_list_safe in move_non_declarations
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 19 Jul 2010 19:34:56 +0000 (12:34 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Mon, 19 Jul 2010 19:36:32 +0000 (12:36 -0700)
The node being processed may be removed from the list and put in a
different list.  Not using the safe version caused list processing to
change streams after moving a node.

src/glsl/linker.cpp

index d46744eeda5c7b8223411203535da2e6e1232f1b..72b83ff992df779ffdf2b9f3c5f70d639e7e2eca 100644 (file)
@@ -543,7 +543,7 @@ exec_node *
 move_non_declarations(exec_list *instructions, exec_node *last,
                      bool make_copies, gl_shader *target)
 {
-   foreach_list(node, instructions) {
+   foreach_list_safe(node, instructions) {
       ir_instruction *inst = (ir_instruction *) node;
 
       if (inst->as_variable() || inst->as_function())