From af043e92018a08dde87892f6e708a12c431d272c Mon Sep 17 00:00:00 2001 From: Gildas Bazin Date: Sun, 8 Oct 2006 00:12:28 +0000 Subject: [PATCH 1/1] * Fixed another bunch of memory leaks. --- modules/codec/dts.c | 2 +- modules/codec/ffmpeg/demux.c | 2 ++ modules/demux/mjpeg.c | 2 +- modules/demux/real.c | 11 +++++++++-- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/codec/dts.c b/modules/codec/dts.c index f359b56b60..52be777650 100644 --- a/modules/codec/dts.c +++ b/modules/codec/dts.c @@ -99,7 +99,7 @@ vlc_module_begin(); add_submodule(); set_description( _("DTS audio packetizer") ); set_capability( "packetizer", 10 ); - set_callbacks( OpenPacketizer, NULL ); + set_callbacks( OpenPacketizer, CloseDecoder ); vlc_module_end(); /***************************************************************************** diff --git a/modules/codec/ffmpeg/demux.c b/modules/codec/ffmpeg/demux.c index 9be3f0340a..a7da8efb5d 100644 --- a/modules/codec/ffmpeg/demux.c +++ b/modules/codec/ffmpeg/demux.c @@ -255,7 +255,9 @@ void E_(CloseDemux)( vlc_object_t *p_this ) { demux_t *p_demux = (demux_t*)p_this; demux_sys_t *p_sys = p_demux->p_sys; + unsigned int i; + FREENULL( p_sys->tk ); if( p_sys->ic ) av_close_input_file( p_sys->ic ); if( p_sys->io_buffer ) free( p_sys->io_buffer ); free( p_sys ); diff --git a/modules/demux/mjpeg.c b/modules/demux/mjpeg.c index cf155931b2..67824c9802 100644 --- a/modules/demux/mjpeg.c +++ b/modules/demux/mjpeg.c @@ -215,8 +215,8 @@ static vlc_bool_t CheckMimeHeader( demux_t *p_demux, int *p_header_size ) msg_Warn( p_demux, "separator %s does not match %s", psz_line, p_sys->psz_separator ); } - free( psz_line ); } + free( psz_line ); psz_line = GetLine( p_demux, &i_pos ); while( psz_line && *psz_line ) { diff --git a/modules/demux/real.c b/modules/demux/real.c index e640afdcab..b7dac5729e 100644 --- a/modules/demux/real.c +++ b/modules/demux/real.c @@ -176,11 +176,16 @@ static void Close( vlc_object_t *p_this ) if( tk->p_subpackets[ j ] ) block_Release( tk->p_subpackets[ j ] ); } - if( !tk->i_subpackets ) free( tk->p_subpackets ); + if( tk->i_subpackets ) free( tk->p_subpackets ); free( tk ); } + if( p_sys->psz_title ) free( p_sys->psz_title ); + if( p_sys->psz_artist ) free( p_sys->psz_artist ); + if( p_sys->psz_copyright ) free( p_sys->psz_copyright ); + if( p_sys->psz_description ) free( p_sys->psz_description ); + if( p_sys->i_track > 0 ) free( p_sys->track ); free( p_sys ); } @@ -523,6 +528,8 @@ static int Demux( demux_t *p_demux ) p_block->i_dts = p_block->i_pts = i_pts; tk->p_subpackets[i_index] = p_block; tk->i_subpacket++; + msg_Err( p_demux, "PTS!DTS: %lld, %lld", + p_block->i_dts, p_block->i_pts); } if( tk->fmt.i_codec == VLC_FOURCC('2','8','_','8') ) @@ -715,7 +722,7 @@ static int HeaderRead( demux_t *p_demux ) msg_Dbg( p_demux, "object %4.4s size=%d version=%d", (char*)&i_id, i_size, i_version ); - if( i_size < 10 ) + if( i_size < 10 && i_id != VLC_FOURCC('D','A','T','A') ) { msg_Dbg( p_demux, "invalid size for object %4.4s", (char*)&i_id ); return VLC_EGENERIC; -- 2.39.2