avconv: Check that muxing_queue exists before reading from it
authorDiego Biurrun <diego@biurrun.de>
Mon, 25 Jul 2016 13:04:02 +0000 (15:04 +0200)
committerDiego Biurrun <diego@biurrun.de>
Wed, 27 Jul 2016 08:59:48 +0000 (10:59 +0200)
This avoids a segfault on nonexisting codec names.

avconv.c

index 57c02ac..43d67e8 100644 (file)
--- a/avconv.c
+++ b/avconv.c
@@ -203,13 +203,15 @@ static void avconv_cleanup(int ret)
 
         avcodec_free_context(&ost->enc_ctx);
 
-        while (av_fifo_size(ost->muxing_queue)) {
-            AVPacket pkt;
-            av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
-            av_packet_unref(&pkt);
+        if (ost->muxing_queue) {
+            while (av_fifo_size(ost->muxing_queue)) {
+                AVPacket pkt;
+                av_log(NULL, AV_LOG_INFO, "after av_fifo_size()\n");
+                av_fifo_generic_read(ost->muxing_queue, &pkt, sizeof(pkt), NULL);
+                av_packet_unref(&pkt);
+            }
+            av_fifo_free(ost->muxing_queue);
         }
-        av_fifo_free(ost->muxing_queue);
-
         av_freep(&output_streams[i]);
     }
     for (i = 0; i < nb_input_files; i++) {