From 07cd46d111b063ed37391ad7c316db9d7927ad03 Mon Sep 17 00:00:00 2001
From: Zack Rusin <zack@tungstengraphics.com>
Date: Wed, 3 Oct 2007 12:00:52 -0400
Subject: In vertex shaders also expect the template to be stack allocated
 structure so allocate a private copy of it.

---
 src/mesa/pipe/softpipe/sp_state_fs.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

(limited to 'src/mesa/pipe/softpipe')

diff --git a/src/mesa/pipe/softpipe/sp_state_fs.c b/src/mesa/pipe/softpipe/sp_state_fs.c
index 390340fa8d..88d9bd9716 100644
--- a/src/mesa/pipe/softpipe/sp_state_fs.c
+++ b/src/mesa/pipe/softpipe/sp_state_fs.c
@@ -67,8 +67,11 @@ void * softpipe_create_vs_state(struct pipe_context *pipe,
    struct softpipe_context *softpipe = softpipe_context(pipe);
    struct sp_vertex_shader_state *state =
       malloc(sizeof(struct sp_vertex_shader_state));
+   struct pipe_shader_state *templ_copy =
+      malloc(sizeof(struct pipe_shader_state));
+   memcpy(templ_copy, templ, sizeof(struct pipe_shader_state));
 
-   state->state = templ;
+   state->state = templ_copy;
    state->draw_data = draw_create_vertex_shader(softpipe->draw,
                                                 state->state);
 
@@ -95,6 +98,7 @@ void softpipe_delete_vs_state(struct pipe_context *pipe,
       (struct sp_vertex_shader_state *)vs;
 
    draw_delete_vertex_shader(softpipe->draw, state->draw_data);
+   free(state->state);
    free(state);
 }
 
-- 
cgit v1.2.3