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
parent 912d55094d
commit cc2c15c3eb

View File

@ -1212,7 +1212,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",