src/pcm/pcm_rate.c: add missing free

Something that is allocated using calloc is not freed on one
or more error paths.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Suman Saha <sumsaha@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
Julia Lawall 2011-09-18 22:04:34 +02:00 committed by Takashi Iwai
parent 6dab1a91cb
commit 2a7f653b7f

View file

@ -1392,11 +1392,13 @@ int snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name,
} else { } else {
SNDERR("Invalid type for rate converter"); SNDERR("Invalid type for rate converter");
snd_pcm_close(pcm); snd_pcm_close(pcm);
free(rate);
return -EINVAL; return -EINVAL;
} }
if (err < 0) { if (err < 0) {
SNDERR("Cannot find rate converter"); SNDERR("Cannot find rate converter");
snd_pcm_close(pcm); snd_pcm_close(pcm);
free(rate);
return -ENOENT; return -ENOENT;
} }
#else #else
@ -1405,6 +1407,7 @@ int snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name,
err = open_func(SND_PCM_RATE_PLUGIN_VERSION, &rate->obj, &rate->ops); err = open_func(SND_PCM_RATE_PLUGIN_VERSION, &rate->obj, &rate->ops);
if (err < 0) { if (err < 0) {
snd_pcm_close(pcm); snd_pcm_close(pcm);
free(rate);
return err; return err;
} }
#endif #endif
@ -1413,6 +1416,7 @@ int snd_pcm_rate_open(snd_pcm_t **pcmp, const char *name,
! rate->ops.input_frames || ! rate->ops.output_frames) { ! rate->ops.input_frames || ! rate->ops.output_frames) {
SNDERR("Inproper rate plugin %s initialization", type); SNDERR("Inproper rate plugin %s initialization", type);
snd_pcm_close(pcm); snd_pcm_close(pcm);
free(rate);
return err; return err;
} }