diff --git a/compiler2/Type.cc b/compiler2/Type.cc index 10acf4423f797b8a0bae30fc38ab1fca9cf1d9b9..0f0221295106f10e5d01a265c1206df2e9ad1542 100644 --- a/compiler2/Type.cc +++ b/compiler2/Type.cc @@ -3112,14 +3112,22 @@ namespace Common { err = true; } break; - case T_INT: + case T_INT: { + boolean first_digit = false; // there's at least one digit for (size_t i = (dval[0] == '-') ? 1 : 0; i < dval_len; ++i) { if (dval[i] < '0' || dval[i] > '9') { err = true; break; // from the loop } + else { + first_digit = true; + } } - break; + if (!first_digit) { + // empty value or just a '-' + err = true; + } + break; } case T_REAL: { if (strcmp(dval, "infinity") == 0 || strcmp(dval, "-infinity") == 0 || strcmp(dval, "not_a_number") == 0) {