buffer: fix blob range error with many chunks

PR-URL: https://github.com/nodejs/node/pull/47320
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com>
Reviewed-By: Mohammed Keyvanzadeh <mohammadkeyvanzade94@gmail.com>
This commit is contained in:
Khafra
2023-04-01 10:51:26 -04:00
committed by GitHub
parent 1168ab6f05
commit 85705a4795
2 changed files with 16 additions and 1 deletions

View File

@@ -69,6 +69,8 @@ const {
CountQueuingStrategy,
} = require('internal/webstreams/queuingstrategies');
const { queueMicrotask } = require('internal/process/task_queues');
const kHandle = Symbol('kHandle');
const kType = Symbol('kType');
const kLength = Symbol('kLength');
@@ -284,7 +286,7 @@ class Blob {
}
if (buffer !== undefined)
buffers.push(buffer);
readNext();
queueMicrotask(() => readNext());
});
};
readNext();

View File

@@ -315,3 +315,16 @@ assert.throws(() => new Blob({}), {
delete Object.prototype.type;
}
(async () => {
// Refs: https://github.com/nodejs/node/issues/47301
const random = Buffer.alloc(256).fill('0');
const chunks = [];
for (let i = 0; i < random.length; i += 2) {
chunks.push(random.subarray(i, i + 2));
}
await new Blob(chunks).arrayBuffer();
})().then(common.mustCall());