RESOLVED FIXED 258789
atob() clones the output more than necessary
https://bugs.webkit.org/show_bug.cgi?id=258789
Summary atob() clones the output more than necessary
Jarred Sumner
Reported 2023-07-02 20:04:29 PDT
From: https://github.com/WebKit/WebKit/blob/de456d04c10080ce71f48d14b3a9d278854d5f8a/Source/WebCore/page/Base64Utilities.cpp#L53 auto decodedData = base64Decode(encodedString, Base64DecodeMode::DefaultValidatePaddingAndIgnoreWhitespace); if (!decodedData) return Exception { InvalidCharacterError }; return String(decodedData->data(), decodedData->size()); String(const char*, unsigned) calls StringImpl::create(reinterpret_cast<const LChar*>(ptr), length). This is an extra clone, from the Vector<uint8_t> -> StringImpl. Seems like moving the Vector would also clone it. Possible suggestions: - base64Decode could have a template arg to use WTF::StringBuilder? - Maybe there's a way using ExternalStringImpl?
Attachments
Radar WebKit Bug Importer
Comment 1 2023-07-09 20:05:15 PDT
Keith Miller
Comment 2 2023-07-12 09:53:59 PDT
EWS
Comment 3 2023-07-12 17:17:47 PDT
Committed 266016@main (985e10033996): <https://commits.webkit.org/266016@main> Reviewed commits have been landed. Closing PR #15781 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.