From 19e3c24835b06e11f137e62e85f9a36a54e8bfcf Mon Sep 17 00:00:00 2001 From: Jacky2k Date: Thu, 6 Jan 2011 10:44:06 +1100 Subject: [PATCH] fix arithmetic overflow Signed-off-by: Michael Moon --- gcode_parse.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/gcode_parse.c b/gcode_parse.c index e9fc162..3673be7 100644 --- a/gcode_parse.c +++ b/gcode_parse.c @@ -60,10 +60,14 @@ int32_t decfloat_to_int(decfloat *df, int32_t multiplicand, int32_t denominator) e--; // scale factors - if (multiplicand != 1) - r *= multiplicand; - if (denominator != 1) - r /= denominator; +// if (multiplicand != 1) +// r *= multiplicand; +// if (denominator != 1) +// r /= denominator; + + int32_t rnew1 = r * (multiplicand / denominator) + int32_t rnew2 = r * (multiplicand % denominator) + r = rnew1 + rnew2; // sign if (df->sign)