From 733d8da5793f61a67e1e87322ca623be1c43552a Mon Sep 17 00:00:00 2001 From: Sean Quinlan <1011062+sbquinlan@users.noreply.github.com> Date: Wed, 16 Feb 2022 14:28:56 -0800 Subject: [PATCH] lib: allow respondWithNewView on byob auto allocated streams Fixes: https://github.com/nodejs/node/issues/41886 PR-URL: https://github.com/nodejs/node/pull/41887 Reviewed-By: James M Snell Reviewed-By: Benjamin Gruenbaum --- lib/internal/webstreams/readablestream.js | 1 + .../test-whatwg-readablebytestream.js | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/lib/internal/webstreams/readablestream.js b/lib/internal/webstreams/readablestream.js index 9853bd8b2cf2a3..0746d44171fed0 100644 --- a/lib/internal/webstreams/readablestream.js +++ b/lib/internal/webstreams/readablestream.js @@ -2604,6 +2604,7 @@ function readableByteStreamControllerPullSteps(controller, readRequest) { pendingPullIntos, { buffer, + bufferByteLength: autoAllocateChunkSize, byteOffset: 0, byteLength: autoAllocateChunkSize, bytesFilled: 0, diff --git a/test/parallel/test-whatwg-readablebytestream.js b/test/parallel/test-whatwg-readablebytestream.js index dd804ff212822d..83ec85fae61405 100644 --- a/test/parallel/test-whatwg-readablebytestream.js +++ b/test/parallel/test-whatwg-readablebytestream.js @@ -232,3 +232,33 @@ class Source { code: 'ERR_INVALID_STATE', }); } + +{ + const stream = new ReadableStream({ + type: 'bytes', + pull(c) { + const v = new Uint8Array(c.byobRequest.view.buffer, 0, 3); + v.set([20, 21, 22]); + c.byobRequest.respondWithNewView(v); + }, + }); + const buffer = new ArrayBuffer(10); + const view = new Uint8Array(buffer, 0, 3); + view.set([10, 11, 12]); + const reader = stream.getReader({ mode: 'byob' }); + reader.read(view); +} + +{ + const stream = new ReadableStream({ + type: 'bytes', + autoAllocateChunkSize: 10, + pull(c) { + const v = new Uint8Array(c.byobRequest.view.buffer, 0, 3); + v.set([20, 21, 22]); + c.byobRequest.respondWithNewView(v); + }, + }); + const reader = stream.getReader(); + reader.read(); +}