# HG changeset patch
# User Mario de Sousa <msousa@fe.up.pt>
# Date 1545824445 0
# Node ID 585445abc4a21b57f5d108a795cb92404639b9f8
# Parent  b37de6a9ad7fbc335dd902f8381244c8263c1518
definitive fix of issue #76: remove internal overflow of u64 when calculating least common multiple of task intervals.

diff -r b37de6a9ad7f -r 585445abc4a2 stage4/generate_c/generate_c.cc
--- a/stage4/generate_c/generate_c.cc	Tue Dec 25 12:15:29 2018 +0000
+++ b/stage4/generate_c/generate_c.cc	Wed Dec 26 11:40:45 2018 +0000
@@ -544,7 +544,7 @@
 /***********************************************************************/
 /***********************************************************************/
 
-#define MILLISECOND 1
+#define MILLISECOND 1000000
 #define SECOND 1000 * MILLISECOND
 
 unsigned long long calculate_time(symbol_c *symbol) {
@@ -649,7 +649,7 @@
       if (least_common_ticktime == 0)
         least_common_ticktime = time;
       else
-        least_common_ticktime = (least_common_ticktime * time) / common_ticktime;
+        least_common_ticktime = least_common_ticktime * (time / common_ticktime);
     }
 
     unsigned long long get_common_ticktime(void) {