diff --git a/AK/StringBuilder.h b/AK/StringBuilder.h index 98299ea86b..f6a5a5e320 100644 --- a/AK/StringBuilder.h +++ b/AK/StringBuilder.h @@ -78,15 +78,21 @@ public: template void join(SeparatorType const& separator, CollectionType const& collection, StringView fmtstr = "{}"sv) + { + MUST(try_join(separator, collection, fmtstr)); + } + + template + ErrorOr try_join(SeparatorType const& separator, CollectionType const& collection, StringView fmtstr = "{}"sv) { bool first = true; for (auto& item : collection) { - if (first) - first = false; - else - append(separator); - appendff(fmtstr, item); + if (!first) + TRY(try_append(separator)); + TRY(try_appendff(fmtstr, item)); + first = false; } + return {}; } private: