ffprobe: fix printing of unit values which cannot be contained in an int
authorStefano Sabatini <stefasab@gmail.com>
Tue, 17 Jan 2012 23:01:07 +0000 (00:01 +0100)
committerStefano Sabatini <stefasab@gmail.com>
Tue, 17 Jan 2012 23:01:07 +0000 (00:01 +0100)
Use long long int to contain such values instead of an int, which is
required to contain at least 64 bits, so it is guaranteed to contain also
int64_t values, which are used by some fields.

In particular, should fix trac ticket #921.

ffprobe.c

index 61c66ae..0731b04 100644 (file)
--- a/ffprobe.c
+++ b/ffprobe.c
@@ -77,7 +77,7 @@ void av_noreturn exit_program(int ret)
 }
 
 struct unit_value {
-    union { double d; int i; } val;
+    union { double d; long long int i; } val;
     const char *unit;
 };
 
@@ -119,7 +119,7 @@ static char *value_string(char *buf, int buf_size, struct unit_value uv)
         }
 
         if (show_float || vald != (int)vald) l = snprintf(buf, buf_size, "%.3f", vald);
-        else                                 l = snprintf(buf, buf_size, "%d",   (int)vald);
+        else                                 l = snprintf(buf, buf_size, "%lld", (long long int)vald);
         snprintf(buf+l, buf_size-l, "%s%s%s", prefix_string || show_value_unit ? " " : "",
                  prefix_string, show_value_unit ? uv.unit : "");
     } else {