Remove undefined behavior from a left shift of a negative value.

Fixed by shifting a positive value, then negating the result.

(Credit: Richard Trieu)
This commit is contained in:
Aaron Jacobs 2015-08-03 10:58:29 +10:00 committed by Christopher Dunn
parent ffea45bbe1
commit 22ec823cc7

View File

@ -1215,7 +1215,7 @@ JSONTEST_FIXTURE(ValueTest, nonIntegers) {
JSONTEST_ASSERT_EQUAL(-2147483648.5, val.asDouble());
JSONTEST_ASSERT_EQUAL(float(-2147483648.5), val.asFloat());
#ifdef JSON_HAS_INT64
JSONTEST_ASSERT_EQUAL(-Json::Int64(1) << 31, val.asLargestInt());
JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 31), val.asLargestInt());
#endif
JSONTEST_ASSERT_EQUAL(true, val.asBool());
JSONTEST_ASSERT_EQUAL("-2147483648.5",