gcode_parse.c: Limit the digits right of the decimal.

Previously, variables in decfloat_to_int() could overflow due to
excess precision, like Z2.0000000.
This commit is contained in:
Markus Hitter 2011-01-07 18:53:13 +01:00 committed by Michael Moon
parent e44954b333
commit 719a9d32b5
1 changed files with 4 additions and 2 deletions

View File

@ -292,8 +292,10 @@ void gcode_parse_char(uint8_t c) {
#endif
default:
// can't do ranges in switch..case, so process actual digits here
if (c >= '0' && c <= '9') {
// can't do ranges in switch..case, so process actual digits here. Limit the digits right of the decimal to avoid variable overflow in decfloat_to_int() due to excess precision
if (c >= '0' && c <= '9' &&
((next_target.option_inches == 0 && read_digit.exponent < 4) ||
(next_target.option_inches && read_digit.exponent < 5))) {
// this is simply mantissa = (mantissa * 10) + atoi(c) in different clothes
read_digit.mantissa = (read_digit.mantissa << 3) + (read_digit.mantissa << 1) + (c - '0');
if (read_digit.exponent)