avconv: fix segfault at EOF with delayed pictures
authorJanne Grunau <janne-libav@jannau.net>
Wed, 23 Nov 2011 23:18:33 +0000 (00:18 +0100)
committerJanne Grunau <janne-libav@jannau.net>
Wed, 23 Nov 2011 23:33:02 +0000 (00:33 +0100)
At EOF it makes no sense to modify avpkt.{data,size} in output_packet
since no data is consumed. Frame threading with more than 1 threads
hits the segfault.

avconv.c

index be870a5..6f64bc8 100644 (file)
--- a/avconv.c
+++ b/avconv.c
@@ -1892,8 +1892,11 @@ static int output_packet(InputStream *ist,
 
         if (ret < 0)
             return ret;
-        avpkt.data += ret;
-        avpkt.size -= ret;
+        // touch data and size only if not EOF
+        if (pkt) {
+            avpkt.data += ret;
+            avpkt.size -= ret;
+        }
         if (!got_output) {
             continue;
         }