diff options
author | 2022-12-06 17:35:42 -0800 | |
---|---|---|
committer | 2022-12-06 17:36:24 -0800 | |
commit | 20a4b72ff42d2ac030751ea6a589f36377442786 (patch) | |
tree | a4b4d1b73ab2ed9ec4e7676257c01adfd65586d8 /src/bun.js/bindings/JSStringDecoder.cpp | |
parent | 41d778fbfbee6e97c6ac355938086b30a8b29f56 (diff) | |
download | bun-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.cpp | 9 |
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)))); |