diff options
author | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-10-16 20:14:29 +0000 |
---|---|---|
committer | arpi <arpi@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-10-16 20:14:29 +0000 |
commit | c71c9ff5abe065a01559e426e75678fac8526cbf (patch) | |
tree | eddd3c8f88ec28c2f10b3c54fdba8caffc1f8895 | |
parent | b4e3f138ed8fa0ae23188a570565670deaf2e372 (diff) | |
download | mpv-c71c9ff5abe065a01559e426e75678fac8526cbf.tar.bz2 mpv-c71c9ff5abe065a01559e426e75678fac8526cbf.tar.xz |
memleak fix (found by valgrind)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7760 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r-- | libmpdemux/demux_mov.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c index 02e2c6cb88..696315dca3 100644 --- a/libmpdemux/demux_mov.c +++ b/libmpdemux/demux_mov.c @@ -286,7 +286,6 @@ int mov_check_file(demuxer_t* demuxer){ mp_msg(MSGT_DEMUX,MSGL_V,"Checking for MOV\n"); memset(priv,0,sizeof(mov_priv_t)); - demuxer->priv=priv; while(1){ int skipped=8; @@ -374,7 +373,7 @@ int mov_check_file(demuxer_t* demuxer){ /* dunno what, but we shoudl ignore it */ break; default: - if(no==0) return 0; // first chunk is bad! + if(no==0){ free(priv); return 0;} // first chunk is bad! id = be2me_32(id); mp_msg(MSGT_DEMUX,MSGL_V,"MOV: unknown chunk: %.4s %d\n",&id,(int)len); } @@ -382,13 +381,19 @@ skip_chunk: if(!stream_skip(demuxer->stream,len-skipped)) break; ++no; } - + + if(flags==3){ + demuxer->priv=priv; + return 1; + } + free(priv); + if(flags==1) mp_msg(MSGT_DEMUX,MSGL_WARN,"MOV: missing data (mdat) chunk! Maybe broken file...\n"); else if(flags==2) mp_msg(MSGT_DEMUX,MSGL_WARN,"MOV: missing header (moov/cmov) chunk! Maybe broken file...\n"); -return (flags==3); + return 0; } static void lschunks(demuxer_t* demuxer,int level,off_t endpos,mov_track_t* trak){ |