d3dx9: Avoid double freeing samplers.

Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
stable
Paul Gofman 2019-11-18 16:59:41 +01:00 committed by Alexandre Julliard
parent c799c1ea36
commit 6aced396ba
1 changed files with 4 additions and 5 deletions

View File

@ -516,8 +516,7 @@ static void free_sampler(struct d3dx_sampler *sampler)
{
free_state(&sampler->states[i]);
}
HeapFree(GetProcessHeap(), 0, sampler->states);
HeapFree(GetProcessHeap(), 0, sampler);
heap_free(sampler->states);
}
static void d3dx_pool_release_shared_parameter(struct d3dx_top_level_parameter *param);
@ -531,7 +530,7 @@ static void free_parameter_data(struct d3dx_parameter *param, BOOL child)
switch (param->type)
{
case D3DXPT_STRING:
HeapFree(GetProcessHeap(), 0, *(char **)param->data);
heap_free(*(char **)param->data);
break;
case D3DXPT_TEXTURE:
@ -557,8 +556,8 @@ static void free_parameter_data(struct d3dx_parameter *param, BOOL child)
break;
}
}
if (!child)
HeapFree(GetProcessHeap(), 0, param->data);
if (!child || is_param_type_sampler(param->type))
heap_free(param->data);
}
static void free_parameter(struct d3dx_parameter *param, BOOL element, BOOL child)