mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 19:15:09 +00:00
AK: Fix JsonValue copy constructor behavior for 64-bit values
The fact that JsonValues can contain 64-bit values isn't a JavaScript compatible behavior in the first place, but as long as we're supporting this, we should make sure it works correctly.
This commit is contained in:
parent
655f4daeb1
commit
ecd4c6718e
2 changed files with 11 additions and 3 deletions
|
@ -68,7 +68,7 @@ void JsonValue::copy_from(const JsonValue& other)
|
||||||
m_value.as_array = new JsonArray(*other.m_value.as_array);
|
m_value.as_array = new JsonArray(*other.m_value.as_array);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
m_value.as_string = other.m_value.as_string;
|
m_value.as_u64 = other.m_value.as_u64;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,7 +76,7 @@ void JsonValue::copy_from(const JsonValue& other)
|
||||||
JsonValue::JsonValue(JsonValue&& other)
|
JsonValue::JsonValue(JsonValue&& other)
|
||||||
{
|
{
|
||||||
m_type = exchange(other.m_type, Type::Null);
|
m_type = exchange(other.m_type, Type::Null);
|
||||||
m_value.as_string = exchange(other.m_value.as_string, nullptr);
|
m_value.as_u64 = exchange(other.m_value.as_u64, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
JsonValue& JsonValue::operator=(JsonValue&& other)
|
JsonValue& JsonValue::operator=(JsonValue&& other)
|
||||||
|
@ -84,7 +84,7 @@ JsonValue& JsonValue::operator=(JsonValue&& other)
|
||||||
if (this != &other) {
|
if (this != &other) {
|
||||||
clear();
|
clear();
|
||||||
m_type = exchange(other.m_type, Type::Null);
|
m_type = exchange(other.m_type, Type::Null);
|
||||||
m_value.as_string = exchange(other.m_value.as_string, nullptr);
|
m_value.as_u64 = exchange(other.m_value.as_u64, 0);
|
||||||
}
|
}
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,4 +128,12 @@ TEST_CASE(json_utf8_multibyte)
|
||||||
EXPECT_EQ(json.as_string() == "\xc5\xa1", true);
|
EXPECT_EQ(json.as_string() == "\xc5\xa1", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE(json_64_bit_value)
|
||||||
|
{
|
||||||
|
auto big_value = 0x12345678aabbccddull;
|
||||||
|
JsonValue big_json_value(big_value);
|
||||||
|
JsonValue big_json_value_copy = big_json_value;
|
||||||
|
EXPECT_EQ(big_json_value.as_u64(), big_json_value_copy.as_u64());
|
||||||
|
}
|
||||||
|
|
||||||
TEST_MAIN(JSON)
|
TEST_MAIN(JSON)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue