fix double free in 965-glsl branch
authorZou Nan hai <nanhai.zou@intel.com>
Tue, 18 Sep 2007 03:32:25 +0000 (11:32 +0800)
committerZou Nan hai <nanhai.zou@intel.com>
Tue, 18 Sep 2007 03:32:25 +0000 (11:32 +0800)
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/brw_wm_glsl.c
src/mesa/drivers/dri/i965/intel_context.c

index 18ede5f6cdc0d7de2a9bab827389a67dfbe6cee5..f689f7b3050309992c34011ba164c34083dc39d5 100644 (file)
@@ -1173,4 +1173,6 @@ void brw_vs_emit(struct brw_vs_compile *c )
    end_inst = &p->store[p->nr_insn];
    emit_vertex_write(c);
    post_vs_emit(c, end_inst);
+   for (insn = 0; insn < nr_insns; insn++)
+       c->vp->program.Base.Instructions[insn].Data = NULL;
 }
index f47f139282d4e5046f8333c99d1a68cddc612107..f03866d9b9364f0bcd2b9cf42bb17e6e70c4bfc1 100644 (file)
@@ -1246,6 +1246,8 @@ static void brw_wm_emit_glsl(struct brw_wm_compile *c)
        }
     }
     post_wm_emit(c);
+    for (i = 0; i < c->fp->program.Base.NumInstructions; i++)
+       c->fp->program.Base.Instructions[i].Data = NULL;
 }
 
 void brw_wm_glsl_emit(struct brw_wm_compile *c)
index 3215cc7218a2a7b92507ce4e7ce59cc0df02df7d..35babcac233d48f9cde813ea773894f95a463d4b 100644 (file)
@@ -555,6 +555,8 @@ void intelDestroyContext(__DRIcontextPrivate *driContextPriv)
 #endif
 
       /* free the Mesa context */
+      intel->ctx.VertexProgram.Current = NULL;
+      intel->ctx.FragmentProgram.Current = NULL;
       _mesa_destroy_context(&intel->ctx);
    }