From a409b832facf87b7623b5e649aec4ef4f6880161 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 16 Dec 2021 21:52:20 +0100 Subject: [PATCH] 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. --- AK/JsonValue.cpp | 2 ++ Tests/AK/TestJSON.cpp | 6 ++++++ 2 files changed, 8 insertions(+) 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::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); +}