Open
Description
Describe the bug
Version 1.9.2 no longer accepts 1+e9999
(or 2e+308
and anything above), regardless of allowSpecialFloats
setting.
To Reproduce
Steps to reproduce the behavior:
#include <iostream>
#include <json/json.h>
#include <sstream>
int main(int argc, const char* argv[])
{
Json::CharReaderBuilder reader;
reader["allowSpecialFloats"] = true; // Makes no difference
std::string s = "1e+9999";
Json::Value val;
std::string errors;
std::stringstream json(s);
if (Json::parseFromStream(reader, json, &val, &errors)) {
std::cout << s << " -> " << val.asDouble() << "\n";
} else {
std::cout << errors;
}
return 0;
}
Expected behavior
1e+9999 -> inf
Actual behavior:
* Line 1, Column 1
'1e+9999' is not a number.
Desktop (please complete the following information):
- OS: Fedora 34
- Meson version 0.59.1
- Ninja version 1.10.2
Additional context
- Version 1.9.1 accepts value
1e+9999
as infinite, regardless ofallowSpecialFloats
setting. - Version 1.9.2 no longer accepts
2e+308
or above, regardless ofallowSpecialFloats
setting.
Specifically breaking change seems to be commit 645cd04 "Number fixes (#1053)".