diff options
Diffstat (limited to 'src/bun.js/bindings/JSBuffer.cpp')
-rw-r--r-- | src/bun.js/bindings/JSBuffer.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/bun.js/bindings/JSBuffer.cpp b/src/bun.js/bindings/JSBuffer.cpp index daca67676..5b41949c4 100644 --- a/src/bun.js/bindings/JSBuffer.cpp +++ b/src/bun.js/bindings/JSBuffer.cpp @@ -28,6 +28,7 @@ #include "wtf/GetPtr.h" #include "wtf/PointerPreparations.h" #include "wtf/URL.h" +#include "wtf/text/WTFString.h" #include "JavaScriptCore/BuiltinNames.h" #include "JSBufferEncodingType.h" @@ -270,7 +271,6 @@ static inline JSC::EncodedJSValue constructBufferFromStringAndEncoding(JSC::JSGl break; } - case WebCore::BufferEncodingType::latin1: case WebCore::BufferEncodingType::ascii: { if (view.is8Bit()) { result = Bun__encoding__constructFromLatin1AsASCII(lexicalGlobalObject, view.characters8(), view.length()); @@ -279,6 +279,14 @@ static inline JSC::EncodedJSValue constructBufferFromStringAndEncoding(JSC::JSGl } break; } + case WebCore::BufferEncodingType::latin1: { + if (view.is8Bit()) { + result = Bun__encoding__constructFromLatin1AsASCII(lexicalGlobalObject, view.characters8(), view.length()); + } else { + result = Bun__encoding__constructFromUTF16AsASCII(lexicalGlobalObject, view.characters16(), view.length()); + } + break; + } case WebCore::BufferEncodingType::ucs2: case WebCore::BufferEncodingType::utf16le: { if (view.is8Bit()) { @@ -1094,12 +1102,16 @@ static inline JSC::EncodedJSValue jsBufferPrototypeFunction_toStringBody(JSC::JS break; } - case WebCore::BufferEncodingType::latin1: case WebCore::BufferEncodingType::ascii: { ret = Bun__encoding__toStringASCII(castedThis->typedVector() + offset, length, lexicalGlobalObject); break; } + case WebCore::BufferEncodingType::latin1: { + ret = JSC::JSValue::encode(JSC::jsString(vm, WTF::StringImpl::create(reinterpret_cast<const UChar*>(castedThis->typedVector() + offset), length))); + break; + } + case WebCore::BufferEncodingType::ucs2: case WebCore::BufferEncodingType::utf16le: { ret = Bun__encoding__toStringUTF16(castedThis->typedVector() + offset, length, lexicalGlobalObject); |