From 5e99a23b2d0b74048125844521c4bf7d8e07e19d Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Thu, 13 Sep 2012 00:44:04 +0200 Subject: [PATCH] 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. --- ffprobe.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ffprobe.c b/ffprobe.c index 06af4c33d0..c9f973d068 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 : ""); }