[FFmpeg-cvslog] avcodec/clearvideo: Do not lose the return code of decode_mb()

Michael Niedermayer git at videolan.org
Fri Mar 31 00:36:04 EEST 2017


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Thu Mar 30 22:12:12 2017 +0200| [fe46d92c15ca7bd35324ff667c433a06af8b845c] | committer: Michael Niedermayer

avcodec/clearvideo: Do not lose the return code of decode_mb()

Fixes CID1401671

Reviewed-by: Paul B Mahol <onemda at gmail.com>
Reviewed-by: Nicolas George <george at nsup.org>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

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

diff --git a/libavcodec/clearvideo.c b/libavcodec/clearvideo.c
index e2644e3..437c459 100644
--- a/libavcodec/clearvideo.c
+++ b/libavcodec/clearvideo.c
@@ -281,6 +281,7 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data,
     uint32_t frame_type;
     int i, j;
     int ret;
+    int mb_ret = 0;
 
     bytestream2_init(&gb, buf, buf_size);
     if (avctx->codec_tag == MKTAG('C','L','V','1')) {
@@ -312,7 +313,9 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data,
 
         for (j = 0; j < c->mb_height; j++) {
             for (i = 0; i < c->mb_width; i++) {
-                ret |= decode_mb(c, i, j);
+                ret = decode_mb(c, i, j);
+                if (ret < 0)
+                    mb_ret = ret;
             }
         }
     } else {
@@ -323,7 +326,7 @@ static int clv_decode_frame(AVCodecContext *avctx, void *data,
 
     *got_frame = 1;
 
-    return ret < 0 ? ret : buf_size;
+    return mb_ret < 0 ? mb_ret : buf_size;
 }
 
 static av_cold int clv_decode_init(AVCodecContext *avctx)



More information about the ffmpeg-cvslog mailing list