summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-12-11 23:15:48 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-12-16 06:22:19 +0200
commitccd5c8566f151965ebc26d3fdd2071d9053d8520 (patch)
treeff9ca15ecda0f033ccf00c5ab77e0839c183aad0
parentb4c2cd422ee0b68dca1902c18c3c04f94603333f (diff)
downloadmpv-ccd5c8566f151965ebc26d3fdd2071d9053d8520.tar.bz2
mpv-ccd5c8566f151965ebc26d3fdd2071d9053d8520.tar.xz
demux_ts: fix several memleaks
Fixes bug 1280. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32696 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--libmpdemux/demux_ts.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c
index a68b59396b..daeefdd7bf 100644
--- a/libmpdemux/demux_ts.c
+++ b/libmpdemux/demux_ts.c
@@ -1116,6 +1116,17 @@ static void demux_close_ts(demuxer_t * demuxer)
}
free(priv->pmt);
}
+ for (i = 0; i < NB_PID_MAX; i++)
+ {
+ free(priv->ts.pids[i]);
+ priv->ts.pids[i] = NULL;
+ }
+ for (i = 0; i < 3; i++)
+ {
+ if (priv->fifo[i].pack)
+ free_demux_packet(priv->fifo[i].pack);
+ priv->fifo[i].pack = NULL;
+ }
free(priv);
}
demuxer->priv=NULL;
@@ -2680,7 +2691,12 @@ static int fill_packet(demuxer_t *demuxer, demux_stream_t *ds, demux_packet_t **
{
int ret = 0;
- if((*dp != NULL) && (*dp_offset > 0))
+ if(*dp && *dp_offset <= 0)
+ {
+ free_demux_packet(*dp);
+ *dp = NULL;
+ }
+ if(*dp)
{
ret = *dp_offset;
resize_demux_packet(*dp, ret); //shrinked to the right size