aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/builtins/cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-19 23:05:03 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-19 23:05:03 -0800
commitc68b11e8cbf493723d0b2e029fe6e10d1fe7e83d (patch)
treee27ed2898fa4153a04871213b5f60bc34a2fbe23 /src/bun.js/builtins/cpp
parent16d20bde092b622a690e7a4bdea4b2c46b58fbaa (diff)
downloadbun-c68b11e8cbf493723d0b2e029fe6e10d1fe7e83d.tar.gz
bun-c68b11e8cbf493723d0b2e029fe6e10d1fe7e83d.tar.zst
bun-c68b11e8cbf493723d0b2e029fe6e10d1fe7e83d.zip
[streams] Fix exception in streams with 1 item that sometimes occurred
Diffstat (limited to 'src/bun.js/builtins/cpp')
-rw-r--r--src/bun.js/builtins/cpp/ReadableStreamDefaultReaderBuiltins.cpp19
1 files changed, 16 insertions, 3 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" \