Mercurial > mplayer.hg
comparison libmpdemux/demux_ts.c @ 32609:3ca30fb56837
Fix several memleaks in TS demuxer.
Fixes bug 1280.
author | reimar |
---|---|
date | Sat, 11 Dec 2010 23:15:48 +0000 |
parents | 75c7654261d0 |
children | 2e5c286a464a |
comparison
equal
deleted
inserted
replaced
32608:75c7654261d0 | 32609:3ca30fb56837 |
---|---|
1111 { | 1111 { |
1112 free(priv->pmt[i].section.buffer); | 1112 free(priv->pmt[i].section.buffer); |
1113 free(priv->pmt[i].es); | 1113 free(priv->pmt[i].es); |
1114 } | 1114 } |
1115 free(priv->pmt); | 1115 free(priv->pmt); |
1116 } | |
1117 for (i = 0; i < NB_PID_MAX; i++) | |
1118 { | |
1119 free(priv->ts.pids[i]); | |
1120 priv->ts.pids[i] = NULL; | |
1121 } | |
1122 for (i = 0; i < 3; i++) | |
1123 { | |
1124 if (priv->fifo[i].pack) | |
1125 free_demux_packet(priv->fifo[i].pack); | |
1126 priv->fifo[i].pack = NULL; | |
1116 } | 1127 } |
1117 free(priv); | 1128 free(priv); |
1118 } | 1129 } |
1119 demuxer->priv=NULL; | 1130 demuxer->priv=NULL; |
1120 } | 1131 } |
2676 | 2687 |
2677 static int fill_packet(demuxer_t *demuxer, demux_stream_t *ds, demux_packet_t **dp, int *dp_offset, TS_stream_info *si) | 2688 static int fill_packet(demuxer_t *demuxer, demux_stream_t *ds, demux_packet_t **dp, int *dp_offset, TS_stream_info *si) |
2678 { | 2689 { |
2679 int ret = 0; | 2690 int ret = 0; |
2680 | 2691 |
2681 if((*dp != NULL) && (*dp_offset > 0)) | 2692 if(*dp && *dp_offset <= 0) |
2693 { | |
2694 free_demux_packet(*dp); | |
2695 *dp = NULL; | |
2696 } | |
2697 if(*dp) | |
2682 { | 2698 { |
2683 ret = *dp_offset; | 2699 ret = *dp_offset; |
2684 resize_demux_packet(*dp, ret); //shrinked to the right size | 2700 resize_demux_packet(*dp, ret); //shrinked to the right size |
2685 ds_add_packet(ds, *dp); | 2701 ds_add_packet(ds, *dp); |
2686 mp_msg(MSGT_DEMUX, MSGL_DBG2, "ADDED %d bytes to %s fifo, PTS=%.3f\n", ret, (ds == demuxer->audio ? "audio" : (ds == demuxer->video ? "video" : "sub")), (*dp)->pts); | 2702 mp_msg(MSGT_DEMUX, MSGL_DBG2, "ADDED %d bytes to %s fifo, PTS=%.3f\n", ret, (ds == demuxer->audio ? "audio" : (ds == demuxer->video ? "video" : "sub")), (*dp)->pts); |