aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/JSStringDecoder.cpp
diff options
context:
space:
mode:
authorGravatar Dylan Conway <dylan.conway567@gmail.com> 2022-12-06 17:35:42 -0800
committerGravatar Dylan Conway <dylan.conway567@gmail.com> 2022-12-06 17:36:24 -0800
commit20a4b72ff42d2ac030751ea6a589f36377442786 (patch)
treea4b4d1b73ab2ed9ec4e7676257c01adfd65586d8 /src/bun.js/bindings/JSStringDecoder.cpp
parent41d778fbfbee6e97c6ac355938086b30a8b29f56 (diff)
downloadbun-20a4b72ff42d2ac030751ea6a589f36377442786.tar.gz
bun-20a4b72ff42d2ac030751ea6a589f36377442786.tar.zst
bun-20a4b72ff42d2ac030751ea6a589f36377442786.zip
add base64url switch case
Diffstat (limited to 'src/bun.js/bindings/JSStringDecoder.cpp')
-rw-r--r--src/bun.js/bindings/JSStringDecoder.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/bun.js/bindings/JSStringDecoder.cpp b/src/bun.js/bindings/JSStringDecoder.cpp
index 024d9fb62..5d5a66141 100644
--- a/src/bun.js/bindings/JSStringDecoder.cpp
+++ b/src/bun.js/bindings/JSStringDecoder.cpp
@@ -146,7 +146,8 @@ JSC::JSValue JSStringDecoder::text(JSC::VM& vm, JSC::JSGlobalObject* globalObjec
memmove(m_lastChar, bufPtr + end, std::min(4U, length - end));
RELEASE_AND_RETURN(throwScope, JSC::JSValue::decode(Bun__encoding__toString(bufPtr + offset, end - offset, globalObject, static_cast<uint8_t>(m_encoding))));
}
- case BufferEncodingType::base64: {
+ case BufferEncodingType::base64:
+ case BufferEncodingType::base64url: {
uint32_t n = (length - offset) % 3;
if (n == 0)
RELEASE_AND_RETURN(throwScope, JSC::JSValue::decode(Bun__encoding__toString(bufPtr + offset, length - offset, globalObject, static_cast<uint8_t>(m_encoding))));
@@ -177,7 +178,8 @@ JSC::JSValue JSStringDecoder::write(JSC::VM& vm, JSC::JSGlobalObject* globalObje
case BufferEncodingType::ucs2:
case BufferEncodingType::utf16le:
case BufferEncodingType::utf8:
- case BufferEncodingType::base64: {
+ case BufferEncodingType::base64:
+ case BufferEncodingType::base64url: {
uint32_t offset = 0;
if (m_lastNeed) {
JSString* firstHalf = fillLast(vm, globalObject, bufPtr, length).toString(globalObject);
@@ -233,7 +235,8 @@ JSC::JSValue JSStringDecoder::end(JSC::VM& vm, JSC::JSGlobalObject* globalObject
RETURN_IF_EXCEPTION(throwScope, JSC::jsUndefined());
RELEASE_AND_RETURN(throwScope, m_lastNeed ? JSC::jsString(globalObject, firstHalf, WTF::String(u"\uFFFD", 1)) : firstHalf);
}
- case BufferEncodingType::base64: {
+ case BufferEncodingType::base64:
+ case BufferEncodingType::base64url: {
if (length == 0) {
if (m_lastNeed) {
RELEASE_AND_RETURN(throwScope, JSC::JSValue::decode(Bun__encoding__toString(m_lastChar, 3 - m_lastNeed, globalObject, static_cast<uint8_t>(m_encoding))));