Free old parameter list before assigning new one. FIxes memory leak.
authorBrian Paul <brian.paul@tungstengraphics.com>
Sat, 29 Oct 2005 17:07:09 +0000 (17:07 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sat, 29 Oct 2005 17:07:09 +0000 (17:07 +0000)
src/mesa/shader/arbfragparse.c
src/mesa/shader/arbvertparse.c

index 3ef6f8b137ade236df7ecdd124447a5429b901cc..7b9abec1c948344e715ff15fc4c5585d74892149 100644 (file)
@@ -209,14 +209,19 @@ _mesa_parse_arb_fragment_program(GLcontext * ctx, GLenum target,
    program->Base.NumParameters   = ap.Base.NumParameters;
    program->Base.NumAttributes   = ap.Base.NumAttributes;
    program->Base.NumAddressRegs  = ap.Base.NumAddressRegs;
+   program->NumAluInstructions = ap.NumAluInstructions;
+   program->NumTexInstructions = ap.NumTexInstructions;
+   program->NumTexIndirections = ap.NumTexIndirections;
 
    program->InputsRead     = ap.InputsRead;
    program->OutputsWritten = ap.OutputsWritten;
    for (i = 0; i < MAX_TEXTURE_IMAGE_UNITS; i++)
       program->TexturesUsed[i] = ap.TexturesUsed[i];
-   program->NumAluInstructions = ap.NumAluInstructions;
-   program->NumTexInstructions = ap.NumTexInstructions;
-   program->NumTexIndirections = ap.NumTexIndirections;
+
+   if (program->Parameters) {
+      /* free previous program's parameters */
+      _mesa_free_parameter_list(program->Parameters);
+   }
    program->Parameters         = ap.Parameters;
    program->FogOption          = ap.FogOption;
 
index 0208389c35541910632560fdbc17868c394cd6b4..5d1ad3de2e71964593d93ca60572f851f93034a4 100644 (file)
@@ -191,6 +191,11 @@ _mesa_parse_arb_vertex_program(GLcontext * ctx, GLenum target,
    program->IsPositionInvariant = ap.HintPositionInvariant;
    program->InputsRead     = ap.InputsRead;
    program->OutputsWritten = ap.OutputsWritten;
+
+   if (program->Parameters) {
+      /* free previous program's parameters */
+      _mesa_free_parameter_list(program->Parameters);
+   }
    program->Parameters     = ap.Parameters; 
 
    program->Instructions   = ap.VPInstructions;