diff options
-rw-r--r-- | src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp | 19 | ||||
-rw-r--r-- | src/bun.js/builtins/js/ReadableStreamDefaultReader.js | 17 |
2 files changed, 31 insertions, 5 deletions
diff --git a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp index df58f2ab0..52f8b5147 100644 --- a/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp +++ b/src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp @@ -94,7 +94,7 @@ const char* const s_readableStreamDefaultReaderCancelCode = const JSC::ConstructAbility s_readableStreamDefaultReaderReadManyCodeConstructAbility = JSC::ConstructAbility::CannotConstruct; const JSC::ConstructorKind s_readableStreamDefaultReaderReadManyCodeConstructorKind = JSC::ConstructorKind::None; const JSC::ImplementationVisibility s_readableStreamDefaultReaderReadManyCodeImplementationVisibility = JSC::ImplementationVisibility::Public; -const int s_readableStreamDefaultReaderReadManyCodeLength = 4212; +const int s_readableStreamDefaultReaderReadManyCodeLength = 4661; static const JSC::Intrinsic s_readableStreamDefaultReaderReadManyCodeIntrinsic = JSC::NoIntrinsic; const char* const s_readableStreamDefaultReaderReadManyCode = "(function ()\n" \ @@ -142,12 +142,25 @@ const char* const s_readableStreamDefaultReaderReadManyCode = " if (length > 0) {\n" \ " var outValues = @newArrayWithSize(length);\n" \ " if (@isReadableByteStreamController(controller)) {\n" \ - " for (var i = 0; i < length; i++) {\n" \ + "\n" \ + " {\n" \ + " const buf = values[0];\n" \ + " if (!(@ArrayBuffer.@isView(buf) || buf instanceof @ArrayBuffer)) {\n" \ + " @putByValDirect(outValues, 0, new @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));\n" \ + " } else {\n" \ + " @putByValDirect(outValues, 0, buf);\n" \ + " }\n" \ + " }\n" \ + "\n" \ + " for (var i = 1; i < length; i++) {\n" \ " const buf = values[i];\n" \ " if (!(@ArrayBuffer.@isView(buf) || buf instanceof @ArrayBuffer)) {\n" \ - " @putByValDirect(outValues, i, @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));\n" \ + " @putByValDirect(outValues, i, new @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength));\n" \ + " } else {\n" \ + " @putByValDirect(outValues, i, buf);\n" \ " }\n" \ " }\n" \ + "\n" \ " } else {\n" \ " @putByValDirect(outValues, 0, values[0].value);\n" \ " for (var i = 1; i < length; i++) {\n" \ diff --git a/src/bun.js/builtins/js/ReadableStreamDefaultReader.js b/src/bun.js/builtins/js/ReadableStreamDefaultReader.js index 9430a1037..4671f1458 100644 --- a/src/bun.js/builtins/js/ReadableStreamDefaultReader.js +++ b/src/bun.js/builtins/js/ReadableStreamDefaultReader.js @@ -96,12 +96,25 @@ function readMany() if (length > 0) { var outValues = @newArrayWithSize(length); if (@isReadableByteStreamController(controller)) { - for (var i = 0; i < length; i++) { + + { + const buf = values[0]; + if (!(@ArrayBuffer.@isView(buf) || buf instanceof @ArrayBuffer)) { + @putByValDirect(outValues, 0, new @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)); + } else { + @putByValDirect(outValues, 0, buf); + } + } + + for (var i = 1; i < length; i++) { const buf = values[i]; if (!(@ArrayBuffer.@isView(buf) || buf instanceof @ArrayBuffer)) { - @putByValDirect(outValues, i, @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)); + @putByValDirect(outValues, i, new @Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)); + } else { + @putByValDirect(outValues, i, buf); } } + } else { @putByValDirect(outValues, 0, values[0].value); for (var i = 1; i < length; i++) { |