[FFmpeg-cvslog] ffprobe: avoid potentially lossy long long int -> double cast in value_string()

Stefano Sabatini git at videolan.org
Fri Sep 14 10:57:46 CEST 2012


ffmpeg | branch: master | Stefano Sabatini <stefasab at gmail.com> | Thu Sep 13 00:44:04 2012 +0200| [5e99a23b2d0b74048125844521c4bf7d8e07e19d] | committer: Stefano Sabatini

ffprobe: avoid potentially lossy long long int -> double cast in value_string()

Previously the cast long long int -> double was always performed (and
then the double was converted back to long long int) even when it was
avoidable.

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

 ffprobe.c |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/ffprobe.c b/ffprobe.c
index 06af4c3..c9f973d 100644
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -96,13 +96,14 @@ struct unit_value {
 static char *value_string(char *buf, int buf_size, struct unit_value uv)
 {
     double vald;
+    long long int vali;
     int show_float = 0;
 
     if (uv.unit == unit_second_str) {
         vald = uv.val.d;
         show_float = 1;
     } else {
-        vald = uv.val.i;
+        vald = vali = uv.val.i;
     }
 
     if (uv.unit == unit_second_str && use_value_sexagesimal_format) {
@@ -136,7 +137,7 @@ static char *value_string(char *buf, int buf_size, struct unit_value uv)
         if (show_float || (use_value_prefix && vald != (long long int)vald))
             snprintf(buf, buf_size, "%f", vald);
         else
-            snprintf(buf, buf_size, "%lld", (long long int)vald);
+            snprintf(buf, buf_size, "%lld", vali);
         av_strlcatf(buf, buf_size, "%s%s%s", *prefix_string || show_value_unit ? " " : "",
                  prefix_string, show_value_unit ? uv.unit : "");
     }



More information about the ffmpeg-cvslog mailing list