[FFmpeg-cvslog] avutil/opt: Fix setting int64 to its maximum

Michael Niedermayer git at videolan.org
Sun Nov 20 23:39:59 EET 2016


ffmpeg | branch: master | Michael Niedermayer <michael at niedermayer.cc> | Sun Nov 20 12:57:42 2016 +0100| [748ce9d702860708746993c1fecbbfa7cb533db8] | committer: Michael Niedermayer

avutil/opt: Fix setting int64 to its maximum

Found-by: Andreas
Reviewed-by: Andreas Cadhalpun <andreas.cadhalpun at googlemail.com>
Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>

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

 libavutil/opt.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/libavutil/opt.c b/libavutil/opt.c
index cd16bd1..cd46a56 100644
--- a/libavutil/opt.c
+++ b/libavutil/opt.c
@@ -126,9 +126,13 @@ static int write_number(void *obj, const AVOption *o, void *dst, double num, int
         break;
     case AV_OPT_TYPE_DURATION:
     case AV_OPT_TYPE_CHANNEL_LAYOUT:
-    case AV_OPT_TYPE_INT64:
-        *(int64_t *)dst = llrint(num / den) * intnum;
-        break;
+    case AV_OPT_TYPE_INT64:{
+        double d = num / den;
+        if (intnum == 1 && d == (double)INT64_MAX) {
+            *(int64_t *)dst = INT64_MAX;
+        } else
+            *(int64_t *)dst = llrint(d) * intnum;
+        break;}
     case AV_OPT_TYPE_FLOAT:
         *(float *)dst = num * intnum / den;
         break;



More information about the ffmpeg-cvslog mailing list