mesa: ARB program parser should clean parameters
[mesa.git] / src / mesa / program / program_parse.y
index 7398f5f507a08f06e07b9543462caddb8f80b8fb..f468e3b9b596c83a25a8f6af0b108fc1a1ee4f8a 100644 (file)
@@ -2532,6 +2532,10 @@ _mesa_parse_arb_program(struct gl_context *ctx, GLenum target, const GLubyte *st
     */
    strz = (GLubyte *) ralloc_size(state->mem_ctx, len + 1);
    if (strz == NULL) {
+      if (state->prog->Parameters) {
+         _mesa_free_parameter_list(state->prog->Parameters);
+         state->prog->Parameters = NULL;
+      }
       _mesa_error(ctx, GL_OUT_OF_MEMORY, "glProgramStringARB");
       return GL_FALSE;
    }
@@ -2643,5 +2647,14 @@ error:
    _mesa_symbol_table_dtor(state->st);
    state->st = NULL;
 
+   if (result != GL_TRUE) {
+      if (state->prog->Parameters) {
+         _mesa_free_parameter_list(state->prog->Parameters);
+         state->prog->Parameters = NULL;
+      }
+      ralloc_free(state->prog->String);
+      state->prog->String = NULL;
+   }
+
    return result;
 }