Skip to content

Commit

Permalink
d3dcompiler: Free variable definitions data on allocation errors.
Browse files Browse the repository at this point in the history
Signed-off-by: Matteo Bruni <[email protected]>
Signed-off-by: Alexandre Julliard <[email protected]>
  • Loading branch information
Matteo Bruni authored and julliard committed Feb 16, 2020
1 parent 1854572 commit 4e8ec8a
Showing 1 changed file with 11 additions and 2 deletions.
13 changes: 11 additions & 2 deletions dlls/d3dcompiler_43/hlsl.y
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,15 @@ static void struct_var_initializer(struct list *list, struct hlsl_ir_var *var,
d3dcompiler_free(initializer->args);
}

static void free_parse_variable_def(struct parse_variable_def *v)
{
free_parse_initializer(&v->initializer);
d3dcompiler_free(v->name);
d3dcompiler_free((void *)v->semantic);
d3dcompiler_free(v->reg_reservation);
d3dcompiler_free(v);
}

static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers, struct list *var_list)
{
struct hlsl_type *type;
Expand All @@ -543,7 +552,7 @@ static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers,
{
ERR("Out of memory.\n");
LIST_FOR_EACH_ENTRY_SAFE(v, v_next, var_list, struct parse_variable_def, entry)
d3dcompiler_free(v);
free_parse_variable_def(v);
d3dcompiler_free(var_list);
return NULL;
}
Expand All @@ -558,7 +567,7 @@ static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers,
if (!var)
{
ERR("Out of memory.\n");
d3dcompiler_free(v);
free_parse_variable_def(v);
continue;
}
if (v->array_size)
Expand Down

0 comments on commit 4e8ec8a

Please sign in to comment.