# HG changeset patch # User reimar # Date 1390255717 0 # Node ID 12ed11a8df90f005e9222a932da41ea2f9aa1138 # Parent 689594b793f783b82cc1f05cef3b7444e45177a0 demux_rawdv: Fix memory leak on open error. diff -r 689594b793f7 -r 12ed11a8df90 libmpdemux/demux_rawdv.c --- a/libmpdemux/demux_rawdv.c Mon Jan 20 22:08:36 2014 +0000 +++ b/libmpdemux/demux_rawdv.c Mon Jan 20 22:08:37 2014 +0000 @@ -160,12 +160,12 @@ dv_decoder->quality=DV_QUALITY_BEST; if (dv_parse_header(dv_decoder, dv_frame) == -1) - return NULL; + goto err_out; // create a new video stream header sh_video = new_sh_video(demuxer, 0); if (!sh_video) - return NULL; + goto err_out; // make sure the demuxer knows about the new video stream header // (even though new_sh_video() ought to take care of it) @@ -230,6 +230,11 @@ dv_decoder_free(dv_decoder); //we keep this in the context of both stream headers demuxer->priv=frames; return demuxer; + +err_out: + if (dv_decoder) dv_decoder_free(dv_decoder); + free(frames); + return NULL; } static void demux_close_rawdv(demuxer_t* demuxer)