Skip to content

Commit c079d53

Browse files
authored
Fix assertion failure in RespondInternal after transferring array buffer in RespondWithNewView
Store view byte length before transferring.
1 parent 1147c01 commit c079d53

File tree

2 files changed

+5
-2
lines changed

2 files changed

+5
-2
lines changed

index.bs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3489,9 +3489,10 @@ The following abstract operations support the implementation of the
34893489
|view|.\[[ViewedArrayBuffer]].\[[ByteLength]], throw a {{RangeError}} exception.
34903490
1. If |firstDescriptor|'s [=pull-into descriptor/bytes filled=] + |view|.\[[ByteLength]] >
34913491
|firstDescriptor|'s [=pull-into descriptor/byte length=], throw a {{RangeError}} exception.
3492+
1. Let |viewByteLength| be |view|.\[[ByteLength]].
34923493
1. Set |firstDescriptor|'s [=pull-into descriptor/buffer=] to ?
34933494
[$TransferArrayBuffer$](|view|.\[[ViewedArrayBuffer]]).
3494-
1. Perform ? [$ReadableByteStreamControllerRespondInternal$](|controller|, |view|.\[[ByteLength]]).
3495+
1. Perform ? [$ReadableByteStreamControllerRespondInternal$](|controller|, |viewByteLength|).
34953496
</div>
34963497

34973498
<div algorithm>

reference-implementation/lib/abstract-ops/readable-streams.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1634,9 +1634,11 @@ function ReadableByteStreamControllerRespondWithNewView(controller, view) {
16341634
throw new RangeError('The region specified by view is larger than byobRequest');
16351635
}
16361636

1637+
const viewByteLength = view.byteLength;
1638+
16371639
firstDescriptor.buffer = TransferArrayBuffer(view.buffer);
16381640

1639-
ReadableByteStreamControllerRespondInternal(controller, view.byteLength);
1641+
ReadableByteStreamControllerRespondInternal(controller, viewByteLength);
16401642
}
16411643

16421644
function ReadableByteStreamControllerShiftPendingPullInto(controller) {

0 commit comments

Comments
 (0)