mirror of
https://github.com/mpv-player/mpv
synced 2024-10-30 04:46:41 +01:00
ad_speex: Fix possible memory leaks on error
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32689 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
de8ec24998
commit
d34257b5a3
@ -65,7 +65,7 @@ static int init(sh_audio_t *sh) {
|
|||||||
const SpeexStereoState st_st = SPEEX_STEREO_STATE_INIT; // hack
|
const SpeexStereoState st_st = SPEEX_STEREO_STATE_INIT; // hack
|
||||||
if (!sh->wf || sh->wf->cbSize < 80) {
|
if (!sh->wf || sh->wf->cbSize < 80) {
|
||||||
mp_msg(MSGT_DECAUDIO, MSGL_FATAL, "Missing extradata!\n");
|
mp_msg(MSGT_DECAUDIO, MSGL_FATAL, "Missing extradata!\n");
|
||||||
return 0;
|
goto err_out;
|
||||||
}
|
}
|
||||||
ctx->hdr = speex_packet_to_header((char *)&sh->wf[1], sh->wf->cbSize);
|
ctx->hdr = speex_packet_to_header((char *)&sh->wf[1], sh->wf->cbSize);
|
||||||
if (!ctx->hdr && sh->wf->cbSize == 0x72 && hdr[0] == 1 && hdr[1] == 0) {
|
if (!ctx->hdr && sh->wf->cbSize == 0x72 && hdr[0] == 1 && hdr[1] == 0) {
|
||||||
@ -87,7 +87,7 @@ static int init(sh_audio_t *sh) {
|
|||||||
}
|
}
|
||||||
if (!ctx->hdr) {
|
if (!ctx->hdr) {
|
||||||
mp_msg(MSGT_DECAUDIO, MSGL_FATAL, "Invalid extradata!\n");
|
mp_msg(MSGT_DECAUDIO, MSGL_FATAL, "Invalid extradata!\n");
|
||||||
return 0;
|
goto err_out;
|
||||||
}
|
}
|
||||||
if (ctx->hdr->nb_channels != 1 && ctx->hdr->nb_channels != 2) {
|
if (ctx->hdr->nb_channels != 1 && ctx->hdr->nb_channels != 2) {
|
||||||
mp_msg(MSGT_DECAUDIO, MSGL_WARN, "Invalid number of channels (%i), "
|
mp_msg(MSGT_DECAUDIO, MSGL_WARN, "Invalid number of channels (%i), "
|
||||||
@ -119,6 +119,12 @@ static int init(sh_audio_t *sh) {
|
|||||||
sh->sample_format = AF_FORMAT_S16_NE;
|
sh->sample_format = AF_FORMAT_S16_NE;
|
||||||
sh->context = ctx;
|
sh->context = ctx;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
|
err_out:
|
||||||
|
if (ctx)
|
||||||
|
free(ctx->hdr);
|
||||||
|
free(ctx);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void uninit(sh_audio_t *sh) {
|
static void uninit(sh_audio_t *sh) {
|
||||||
|
Loading…
Reference in New Issue
Block a user