]> granicus.if.org Git - libass/commitdiff
Correctly round doubles to integers
authorGrigori Goronzy <greg@blackbox>
Tue, 7 Jul 2009 22:25:05 +0000 (00:25 +0200)
committerGrigori Goronzy <greg@blackbox>
Tue, 7 Jul 2009 22:25:05 +0000 (00:25 +0200)
mystrtoi and mystrtoll did not round correctly for negative numbers,
this was fixed.

libass/ass_utils.c

index 16f868a205759b977fa2ba80dae167134c47f94d..5f632684caa4098d5e111c5c840a1375cd0421e1 100644 (file)
@@ -33,7 +33,7 @@ int mystrtoi(char **p, int *res)
     double temp_res;
     char *start = *p;
     temp_res = strtod(*p, p);
-    *res = (int) (temp_res + 0.5);
+    *res = (int) (temp_res + (temp_res > 0 ? 0.5 : -0.5));
     if (*p != start)
         return 1;
     else
@@ -45,7 +45,7 @@ int mystrtoll(char **p, long long *res)
     double temp_res;
     char *start = *p;
     temp_res = strtod(*p, p);
-    *res = (long long) (temp_res + 0.5);
+    *res = (int) (temp_res + (temp_res > 0 ? 0.5 : -0.5));
     if (*p != start)
         return 1;
     else