[FFmpeg-cvslog] avcodec/pthread_frame: Check av_packet_ref() for failure

Michael Niedermayer git at videolan.org
Mon Feb 6 02:02:23 EET 2017


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Sun Feb  5 15:09:52 2017 +0100| [1e5cfad57e88d168f50794e1523abfa477ad9aed] | committer: Michael Niedermayer

avcodec/pthread_frame: Check av_packet_ref() for failure

Fixes CID1396242

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

 libavcodec/pthread_frame.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
index cb6d762..272587f 100644
--- a/libavcodec/pthread_frame.c
+++ b/libavcodec/pthread_frame.c
@@ -312,6 +312,7 @@ static int submit_packet(PerThreadContext *p, AVPacket *avpkt)
     FrameThreadContext *fctx = p->parent;
     PerThreadContext *prev_thread = fctx->prev_thread;
     const AVCodec *codec = p->avctx->codec;
+    int ret;
 
     if (!avpkt->size && !(codec->capabilities & AV_CODEC_CAP_DELAY))
         return 0;
@@ -337,7 +338,12 @@ static int submit_packet(PerThreadContext *p, AVPacket *avpkt)
     }
 
     av_packet_unref(&p->avpkt);
-    av_packet_ref(&p->avpkt, avpkt);
+    ret = av_packet_ref(&p->avpkt, avpkt);
+    if (ret < 0) {
+        pthread_mutex_unlock(&p->mutex);
+        av_log(p->avctx, AV_LOG_ERROR, "av_packet_ref() failed in submit_packet()\n");
+        return ret;
+    }
 
     p->state = STATE_SETTING_UP;
     pthread_cond_signal(&p->input_cond);



More information about the ffmpeg-cvslog mailing list