From d2e63e8b0553d400f81285d354f85e778d1cf888 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Reimar=20D=C3=B6ffinger?= Date: Sat, 11 Apr 2009 22:38:00 +0000 Subject: [PATCH] Simplify packet duplication code in ff_interleave_add_packet. Behaviour only changes if pkt->destuct neither av_destruct_packet, av_destruct_packet_nofree nor NULL, in which case the new code avoids a double free. Originally committed as revision 18452 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavformat/utils.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libavformat/utils.c b/libavformat/utils.c index 535da9896..0dec40f9c 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2613,10 +2613,8 @@ void ff_interleave_add_packet(AVFormatContext *s, AVPacket *pkt, this_pktl = av_mallocz(sizeof(AVPacketList)); this_pktl->pkt= *pkt; - if(pkt->destruct == av_destruct_packet) - pkt->destruct= NULL; // not shared -> must keep original from being freed - else - av_dup_packet(&this_pktl->pkt); //shared -> must dup + pkt->destruct= NULL; // do not free original but only the copy + av_dup_packet(&this_pktl->pkt); // duplicate the packet if it uses non-alloced memory next_point = &s->packet_buffer; while(*next_point){ -- 2.11.0