[Webkit-unassigned] [Bug 258789] New: atob() clones the output more than necessary
bugzilla-daemon at webkit.org
bugzilla-daemon at webkit.org
Sun Jul 2 20:04:29 PDT 2023
https://bugs.webkit.org/show_bug.cgi?id=258789
Bug ID: 258789
Summary: atob() clones the output more than necessary
Product: WebKit
Version: WebKit Nightly Build
Hardware: Unspecified
OS: Unspecified
Status: NEW
Severity: Normal
Priority: P2
Component: WebCore JavaScript
Assignee: webkit-unassigned at lists.webkit.org
Reporter: jarred at jarredsumner.com
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?
--
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20230703/75aa5f87/attachment.htm>
More information about the webkit-unassigned
mailing list