[FFmpeg-cvslog] lavf/audiointerleave: check return value of av_new_packet()

Paul B Mahol git at videolan.org
Mon Oct 15 19:05:30 CEST 2012


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Mon Oct 15 15:11:54 2012 +0000| [3ca8a2328878ebdb203e49d0a060df1b5337a370] | committer: Paul B Mahol

lavf/audiointerleave: check return value of av_new_packet()

Fixes CID733709.

Signed-off-by: Paul B Mahol <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3ca8a2328878ebdb203e49d0a060df1b5337a370
---

 libavformat/audiointerleave.c |    7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libavformat/audiointerleave.c b/libavformat/audiointerleave.c
index 609a511..20323a2 100644
--- a/libavformat/audiointerleave.c
+++ b/libavformat/audiointerleave.c
@@ -84,7 +84,8 @@ static int ff_interleave_new_audio_packet(AVFormatContext *s, AVPacket *pkt,
     if (!size || (!flush && size == av_fifo_size(aic->fifo)))
         return 0;
 
-    av_new_packet(pkt, size);
+    if (av_new_packet(pkt, size) < 0)
+        return AVERROR(ENOMEM);
     av_fifo_generic_read(aic->fifo, pkt->data, size, NULL);
 
     pkt->dts = pkt->pts = aic->dts;
@@ -133,11 +134,13 @@ int ff_audio_rechunk_interleave(AVFormatContext *s, AVPacket *out, AVPacket *pkt
         if (st->codec->codec_type == AVMEDIA_TYPE_AUDIO) {
             AVPacket new_pkt;
             int ret;
-            while (ff_interleave_new_audio_packet(s, &new_pkt, i, flush)) {
+            while ((ret = ff_interleave_new_audio_packet(s, &new_pkt, i, flush)) > 0) {
                 ret = ff_interleave_add_packet(s, &new_pkt, compare_ts);
                 if (ret < 0)
                     return ret;
             }
+            if (ret < 0)
+                return ret;
         }
     }
 



More information about the ffmpeg-cvslog mailing list