diff --git a/code/fast_atof.h b/code/fast_atof.h index 58ec14948..a81c53f25 100644 --- a/code/fast_atof.h +++ b/code/fast_atof.h @@ -260,14 +260,14 @@ inline const char* fast_atoreal_move(const char* c, Real& out, bool check_comma } if (!(c[0] >= '0' && c[0] <= '9') && - !(c[0] == '.' && c[1] >= '0' && c[1] <= '9')) + !((c[0] == '.' || (check_comma && c[0] == ',')) && c[1] >= '0' && c[1] <= '9')) { throw std::invalid_argument("Cannot parse string " "as real number: does not start with digit " "or decimal point followed by digit."); } - if (*c != '.') + if (*c != '.' && (! check_comma || c[0] != ',')) { f = static_cast( strtoul10_64 ( c, &c) ); }