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 18ede5f..f689f7b 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 f47f139..f03866d 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 3215cc7..35babca 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);
    }