diff --git a/AK/StringBuilder.cpp b/AK/StringBuilder.cpp index e537e57c197..58460911f79 100644 --- a/AK/StringBuilder.cpp +++ b/AK/StringBuilder.cpp @@ -171,31 +171,37 @@ void StringBuilder::append_as_lowercase(char ch) } void StringBuilder::append_escaped_for_json(StringView string) +{ + MUST(try_append_escaped_for_json(string)); +} + +ErrorOr StringBuilder::try_append_escaped_for_json(StringView string) { for (auto ch : string) { switch (ch) { case '\b': - append("\\b"); + TRY(try_append("\\b")); break; case '\n': - append("\\n"); + TRY(try_append("\\n")); break; case '\t': - append("\\t"); + TRY(try_append("\\t")); break; case '\"': - append("\\\""); + TRY(try_append("\\\"")); break; case '\\': - append("\\\\"); + TRY(try_append("\\\\")); break; default: if (ch >= 0 && ch <= 0x1f) - appendff("\\u{:04x}", ch); + TRY(try_appendff("\\u{:04x}", ch)); else - append(ch); + TRY(try_append(ch)); } } + return {}; } } diff --git a/AK/StringBuilder.h b/AK/StringBuilder.h index 869c20446ce..9021e79eecd 100644 --- a/AK/StringBuilder.h +++ b/AK/StringBuilder.h @@ -35,6 +35,7 @@ public: return vformat(*this, fmtstr.view(), variadic_format_params); } ErrorOr try_append(char const*, size_t); + ErrorOr try_append_escaped_for_json(StringView); void append(StringView); #ifndef KERNEL