don't mess up return data stream if numbers have too much precision

This commit is contained in:
Michael Moon 2011-03-05 15:54:36 +11:00
parent db8902b265
commit c177756913
1 changed files with 12 additions and 10 deletions

View File

@ -291,16 +291,18 @@ void gcode_parse_char(uint8_t c) {
default: default:
// can't do ranges in switch..case, so process actual digits here. // can't do ranges in switch..case, so process actual digits here.
if (c >= '0' && c <= '9' && if (c >= '0' && c <= '9') {
read_digit.exponent < DECFLOAT_EXP_MAX && if (read_digit.exponent < DECFLOAT_EXP_MAX &&
((next_target.option_inches == 0 && ((next_target.option_inches == 0 &&
read_digit.mantissa < DECFLOAT_MANT_MM_MAX) || read_digit.mantissa < DECFLOAT_MANT_MM_MAX) ||
(next_target.option_inches && (next_target.option_inches &&
read_digit.mantissa < DECFLOAT_MANT_IN_MAX))){ read_digit.mantissa < DECFLOAT_MANT_IN_MAX)))
// this is simply mantissa = (mantissa * 10) + atoi(c) in different clothes {
read_digit.mantissa = (read_digit.mantissa << 3) + (read_digit.mantissa << 1) + (c - '0'); // this is simply mantissa = (mantissa * 10) + atoi(c) in different clothes
if (read_digit.exponent) read_digit.mantissa = (read_digit.mantissa << 3) + (read_digit.mantissa << 1) + (c - '0');
read_digit.exponent++; if (read_digit.exponent)
read_digit.exponent++;
}
} }
#ifdef DEBUG #ifdef DEBUG
else { else {