This commit is contained in:
Daniel Lemire 2025-03-09 15:14:52 -04:00
parent 95dedd0aed
commit 6f0049a2e7
3 changed files with 7 additions and 7 deletions

View File

@ -292,8 +292,7 @@ parse_number_string(UC const *p, UC const *pend,
// assume p < pend, so dereference without checks;
answer.negative = (*p == UC('-'));
// C++17 20.19.3.(7.1) explicitly forbids '+' sign here
if ((*p == UC('-')) ||
(uint64_t(fmt & chars_format::allow_leading_plus) &&
if ((*p == UC('-')) || (uint64_t(fmt & chars_format::allow_leading_plus) &&
!basic_json_fmt && *p == UC('+'))) {
++p;
if (p == pend) {

View File

@ -304,9 +304,10 @@ from_chars_float_advanced(UC const *first, UC const *last, T &value,
answer.ptr = first;
return answer;
}
parsed_number_string_t<UC> pns = uint64_t(fmt & detail::basic_json_fmt) ?
parse_number_string<true, UC>(first, last, options) :
parse_number_string<false, UC>(first, last, options);
parsed_number_string_t<UC> pns =
uint64_t(fmt & detail::basic_json_fmt)
? parse_number_string<true, UC>(first, last, options)
: parse_number_string<false, UC>(first, last, options);
if (!pns.valid) {
if (uint64_t(fmt & chars_format::no_infnan)) {
answer.ec = std::errc::invalid_argument;