filter-chain: fix memory leaks

This commit is contained in:
Wim Taymans 2021-11-17 12:53:32 +01:00
parent cf66400035
commit 5bc95234e8

View file

@ -657,14 +657,21 @@ static void * convolver_instantiate(const struct fc_descriptor * Descriptor,
impl = calloc(1, sizeof(*impl)); impl = calloc(1, sizeof(*impl));
if (impl == NULL) if (impl == NULL)
return NULL; goto error;
impl->rate = *SampleRate; impl->rate = *SampleRate;
impl->conv = convolver_new(blocksize, tailsize, samples, n_samples); impl->conv = convolver_new(blocksize, tailsize, samples, n_samples);
if (impl->conv == NULL)
goto error;
free(samples); free(samples);
return impl; return impl;
error:
free(samples);
free(impl);
return NULL;
} }
static void convolver_connect_port(void * Instance, unsigned long Port, static void convolver_connect_port(void * Instance, unsigned long Port,
@ -677,6 +684,8 @@ static void convolver_connect_port(void * Instance, unsigned long Port,
static void convolver_cleanup(void * Instance) static void convolver_cleanup(void * Instance)
{ {
struct convolver_impl *impl = Instance; struct convolver_impl *impl = Instance;
if (impl->conv)
convolver_free(impl->conv);
free(impl); free(impl);
} }