ARB prog parser: Release old program string in _mesa_parse_arb_{fragment,vertex}_program

The program structure passed to _mesa_parse_arb_program is just a
place holder.  The stings that actually need to be released are only
known to the functions calling _mesa_parse_arb_program, so they should
be freed there.
This commit is contained in:
Ian Romanick 2009-11-05 14:17:07 -08:00
parent 301a9b7e28
commit d8e256f923
2 changed files with 6 additions and 4 deletions

View file

@ -87,6 +87,9 @@ _mesa_parse_arb_fragment_program(GLcontext* ctx, GLenum target,
return;
}
if (program->Base.String != NULL)
_mesa_free(program->Base.String);
/* Copy the relevant contents of the arb_program struct into the
* fragment_program struct.
*/
@ -178,6 +181,9 @@ _mesa_parse_arb_vertex_program(GLcontext *ctx, GLenum target,
return;
}
if (program->Base.String != NULL)
_mesa_free(program->Base.String);
/* Copy the relevant contents of the arb_program struct into the
* vertex_program struct.
*/

View file

@ -2304,10 +2304,6 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str,
_mesa_memcpy (strz, str, len);
strz[len] = '\0';
if (state->prog->String != NULL) {
_mesa_free(state->prog->String);
}
state->prog->String = strz;
state->st = _mesa_symbol_table_ctor();