diff --git a/lib/buffer.js b/lib/buffer.js index 495b521def..d2f530a290 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -268,8 +268,8 @@ function fromObject(obj) { } if (obj) { - if (isArrayBuffer(obj.buffer) || 'length' in obj || - isSharedArrayBuffer(obj)) { + if ('length' in obj || isArrayBuffer(obj.buffer) || + isSharedArrayBuffer(obj.buffer)) { if (typeof obj.length !== 'number' || obj.length !== obj.length) { return new FastBuffer(); } diff --git a/test/parallel/test-buffer-sharedarraybuffer.js b/test/parallel/test-buffer-sharedarraybuffer.js index 47b3a59b86..f1bac72079 100644 --- a/test/parallel/test-buffer-sharedarraybuffer.js +++ b/test/parallel/test-buffer-sharedarraybuffer.js @@ -27,3 +27,5 @@ assert.deepStrictEqual(arr_buf, ar_buf, 0); // Checks for calling Buffer.byteLength on a SharedArrayBuffer assert.strictEqual(Buffer.byteLength(sab), sab.byteLength, 0); + +assert.doesNotThrow(() => Buffer.from({buffer: sab}));