diff options
author | Andreas Kling <kling@serenityos.org> | 2021-12-16 21:52:20 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-12-16 22:48:17 +0100 |
commit | a409b832facf87b7623b5e649aec4ef4f6880161 (patch) | |
tree | 6a55af6c7a459ad79156b524a0fd020a8bb942a0 | |
parent | b38f8902d2e277e8cc8028add0eec946170854cd (diff) | |
download | serenity-a409b832facf87b7623b5e649aec4ef4f6880161.zip |
AK: Make JsonValue::from_string("") return a null JsonValue
This unbreaks the /var/run/utmp system which starts out as an empty
string, and is then turned into an object by the first update.
This isn't necessarily the best way for this to work, but it's how
it used to work, so this just fixes the regression for now.
-rw-r--r-- | AK/JsonValue.cpp | 2 | ||||
-rw-r--r-- | Tests/AK/TestJSON.cpp | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/AK/JsonValue.cpp b/AK/JsonValue.cpp index 074d7f1819..a1bc94ce55 100644 --- a/AK/JsonValue.cpp +++ b/AK/JsonValue.cpp @@ -230,6 +230,8 @@ void JsonValue::clear() #ifndef KERNEL ErrorOr<JsonValue> JsonValue::from_string(StringView input) { + if (input.is_empty()) + return JsonValue(); return JsonParser(input).parse(); } #endif diff --git a/Tests/AK/TestJSON.cpp b/Tests/AK/TestJSON.cpp index aa1f8139a9..7f0cbab296 100644 --- a/Tests/AK/TestJSON.cpp +++ b/Tests/AK/TestJSON.cpp @@ -122,3 +122,9 @@ TEST_CASE(json_u64_roundtrip) EXPECT_EQ_FORCE(value.is_error(), false); EXPECT_EQ(value.value().as_u64(), big_value); } + +TEST_CASE(json_parse_empty_string) +{ + auto value = JsonValue::from_string(""); + EXPECT_EQ(value.value().is_null(), true); +} |