folly json bug fix: overflow for -1LL<<63
authorAlexander Sidorov <salex@fb.com>
Fri, 17 Jan 2014 06:26:04 +0000 (22:26 -0800)
committerJordan DeLong <jdelong@fb.com>
Sun, 19 Jan 2014 01:39:43 +0000 (17:39 -0800)
commit325517b966a67d52e9db98cd66d6aa0714b2ad7b
tree4d6cea63c27b7688d5f1a7ca77d6170434b5e94c
parent52ba96edd198f7985f0315b034f84c6dd29234c5
folly json bug fix: overflow for -1LL<<63

Summary: -1LL<<63 was passed to folly::to() without '-' so it overflowed. Fixed that

Test Plan:
tried this:

int main() {
stringstream s;
s << "{\"int\":" << -1LL<<63 << "}";
string str = s.str();
cout << "string to parse: " << endl << str << endl;

int64_t sample = folly::parseJson(str.c_str())["int"].asInt();
LOG(INFO) << "test result = " << sample;

return 0;
}

it returns right value.

Also tried it with "-Infinity" and double type for sample. In works fine as well.

Reviewed By: andrei.alexandrescu@fb.com

FB internal diff: D1130155
folly/json.cpp