diff --git a/include/fast_float/ascii_number.h b/include/fast_float/ascii_number.h index 5c82c6c..f37241c 100644 --- a/include/fast_float/ascii_number.h +++ b/include/fast_float/ascii_number.h @@ -468,7 +468,7 @@ from_chars_result_t parse_int_string(UC const* p, UC const* pend, T& value, uint64_t i = 0; while (p != pend) { uint8_t digit = ch_to_digit(*p); - if (digit > base) { + if (digit >= base) { break; } i = uint64_t(base) * i + digit; // might overflow, check this later diff --git a/include/fast_float/parse_number.h b/include/fast_float/parse_number.h index 4c75f5d..1fd587b 100644 --- a/include/fast_float/parse_number.h +++ b/include/fast_float/parse_number.h @@ -242,7 +242,7 @@ from_chars_result_t from_chars(UC const* first, UC const* last, T& value, in first++; } #endif - if (first == last) { + if (first == last || base < 2 || base > 36) { answer.ec = std::errc::invalid_argument; answer.ptr = first; return answer;