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.
pull/28/head
Stefano Sabatini 12 years ago
parent e3329474a3
commit 5e99a23b2d
  1. 5
      ffprobe.c

@ -96,13 +96,14 @@ struct unit_value {
static char *value_string(char *buf, int buf_size, struct unit_value uv) static char *value_string(char *buf, int buf_size, struct unit_value uv)
{ {
double vald; double vald;
long long int vali;
int show_float = 0; int show_float = 0;
if (uv.unit == unit_second_str) { if (uv.unit == unit_second_str) {
vald = uv.val.d; vald = uv.val.d;
show_float = 1; show_float = 1;
} else { } else {
vald = uv.val.i; vald = vali = uv.val.i;
} }
if (uv.unit == unit_second_str && use_value_sexagesimal_format) { 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)) if (show_float || (use_value_prefix && vald != (long long int)vald))
snprintf(buf, buf_size, "%f", vald); snprintf(buf, buf_size, "%f", vald);
else 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 ? " " : "", av_strlcatf(buf, buf_size, "%s%s%s", *prefix_string || show_value_unit ? " " : "",
prefix_string, show_value_unit ? uv.unit : ""); prefix_string, show_value_unit ? uv.unit : "");
} }

Loading…
Cancel
Save