summaryrefslogtreecommitdiff
path: root/src/glx
diff options
context:
space:
mode:
authorBrian Paul <brian.paul@tungstengraphics.com>2006-05-11 16:27:39 +0000
committerBrian Paul <brian.paul@tungstengraphics.com>2006-05-11 16:27:39 +0000
commit88cf5aa783fc16043b31bc4cc0744412712dc22f (patch)
tree2174e9d4c0a050053ac17c2ffe87bcc3bbb8d8c6 /src/glx
parentfa489dd04326fa0fcf05b078ae3700f379793f21 (diff)
In __glXPushArrayState() we weren't pushing the index field.
But later, in __glXPopArrayState(), we were using that field to set the active_texture_unit. The value was garbage and could lead to things blowing up. See bug 6863.
Diffstat (limited to 'src/glx')
-rw-r--r--src/glx/x11/indirect_vertex_array.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/glx/x11/indirect_vertex_array.c b/src/glx/x11/indirect_vertex_array.c
index 24bca425a2..5a5cd6697e 100644
--- a/src/glx/x11/indirect_vertex_array.c
+++ b/src/glx/x11/indirect_vertex_array.c
@@ -1766,13 +1766,14 @@ __glXPushArrayState( __GLXattribute * state )
struct array_stack_state * stack = & arrays->stack[ (arrays->stack_index * arrays->num_arrays)];
unsigned i;
-
+ /* XXX are we pushing _all_ the necessary fields? */
for ( i = 0 ; i < arrays->num_arrays ; i++ ) {
stack[i].data = arrays->arrays[i].data;
stack[i].data_type = arrays->arrays[i].data_type;
stack[i].user_stride = arrays->arrays[i].user_stride;
stack[i].count = arrays->arrays[i].count;
stack[i].key = arrays->arrays[i].key;
+ stack[i].index = arrays->arrays[i].index;
stack[i].enabled = arrays->arrays[i].enabled;
}