# HG changeset patch # User reimar # Date 1165401694 0 # Node ID f2c58d4fb683d358d7a70093e6816b79ee89cdba # Parent 4a4af52715429502218e987bdcd3d259f800e855 Fix memleak if vd_ffmpeg init fails diff -r 4a4af5271542 -r f2c58d4fb683 libmpcodecs/vd_ffmpeg.c --- a/libmpcodecs/vd_ffmpeg.c Wed Dec 06 10:11:23 2006 +0000 +++ b/libmpcodecs/vd_ffmpeg.c Wed Dec 06 10:41:34 2006 +0000 @@ -242,6 +242,7 @@ lavc_codec = (AVCodec *)avcodec_find_decoder_by_name(sh->codec->dll); if(!lavc_codec){ mp_msg(MSGT_DECVIDEO,MSGL_ERR,MSGTR_MissingLAVCcodec,sh->codec->dll); + uninit(sh); return 0; } @@ -406,6 +407,7 @@ /* open it */ if (avcodec_open(avctx, lavc_codec) < 0) { mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantOpenCodec); + uninit(sh); return 0; } mp_msg(MSGT_DECVIDEO,MSGL_V,"INFO: libavcodec init OK!\n"); @@ -429,7 +431,7 @@ ); } - if (avcodec_close(avctx) < 0) + if (avctx && avctx->codec && avcodec_close(avctx) < 0) mp_msg(MSGT_DECVIDEO,MSGL_ERR, MSGTR_CantCloseCodec); av_freep(&avctx->extradata);