Fix time overflow bug
authorH.G. Muller <h.g.muller@hccnet.nl>
Sat, 15 Sep 2012 17:31:23 +0000 (19:31 +0200)
committerH.G. Muller <h.g.muller@hccnet.nl>
Sat, 15 Sep 2012 17:31:23 +0000 (19:31 +0200)
Time is stored in tenths of seconds, which makes it overflow. An attempt
to correct this in untenths() was ineffective, because of a signed/unsigned
mistake. (0xffffffff is not a large number, but equals -1!)

lasker-2.2.3/src/utils.c

index d4c1da7..9b3ee5c 100644 (file)
@@ -485,7 +485,7 @@ unsigned tenth_secs(void)
 */
 int untenths(unsigned tenths)
 {
-  return (tenths / 10 + 331939277 + 0xffffffff / 10 + 1);
+  return (tenths / 10 + 331939277 + 4*((1<<30) / 5) + 1);
 }
 
 char *tenth_str(unsigned t, int spaces)