[SCM] libav/experimental: 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.

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 16:43:52 UTC 2013


The following commit has been merged in the experimental branch:
commit d2e63e8b0553d400f81285d354f85e778d1cf888
Author: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
Date:   Sat Apr 11 22:38:00 2009 +0000

    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

diff --git a/libavformat/utils.c b/libavformat/utils.c
index 535da98..0dec40f 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){

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list