You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
When trying to read values as uint64, for numbers that are in uint64 range are working properly. Numbers above range but between [2^64,2^64+2^11] return 0. Numbers above 2^64+2^11 throws an exception.
To Reproduce
Code for example:
#include <iostream>
#include <jsoncpp/json/json.h>
#include <jsoncpp/json/reader.h>
#include <jsoncpp/json/value.h>
int main() {
//std::string uint64Str = "1234"; // any number in range [0, 2**64-1] works correctly (prints uint64Str)
//std::string uint64Str = "18446744073709551615"; // any number in range [0, 2**64-1] works correctly, including 2**64-1 (prints uint64Str)
//std::string uint64Str = "18446744073709551616"; //max uint64 + 1 print 0
//std::string uint64Str = "18446744073709551617"; //max uint64 + 2 print 0
// ...
//std::string uint64Str = "18446744073709553663"; //max uint64 + 2048 print 0
//std::string uint64Str = "18446744073709553664"; //max uint64 + 2049 print 0
std::string uint64Str = "18446744073709553665"; //max uint64 + 2050 (or more) throws instance of 'Json::LogicError' what(): double out of UInt64 range
Json::Value root;
Json::Reader reader;
bool parsingResult = reader.parse("{\"key\":"+uint64Str+"}", root);
std::cout<<root["key"].asUInt64()<<std::endl;
return 0;
}
Expected behavior
An error should be thrown also for numbers between [2^64,2^64+2^11].
Desktop (please complete the following information):
OS: Ubuntu 2020
Additional context
Suggested code for fix is here: #1519
The text was updated successfully, but these errors were encountered:
Describe the bug
When trying to read values as uint64, for numbers that are in uint64 range are working properly. Numbers above range but between [2^64,2^64+2^11] return 0. Numbers above 2^64+2^11 throws an exception.
To Reproduce
Code for example:
Expected behavior
An error should be thrown also for numbers between [2^64,2^64+2^11].
Desktop (please complete the following information):
Additional context
Suggested code for fix is here: #1519
The text was updated successfully, but these errors were encountered: