From 2154bc89d8ea16be90e14ff313c4bbcf7443472f Mon Sep 17 00:00:00 2001 From: Ojas Shirekar Date: Fri, 23 Sep 2016 20:01:04 +0530 Subject: [PATCH] buffer: fix check for `.buffer` property isSharedArrayBuffer in fromObject was missing obj.buffer moved the 'length' in obj check so that it is checked first making the code slightly more performant and able to handle SharedArrayBuffer without relying on an explicit check. Ref: https://github.com/nodejs/node/pull/8510 PR-URL: https://github.com/nodejs/node/pull/8739 Reviewed-By: Ilkka Myller Reviewed-By: Anna Henningsen --- lib/buffer.js | 4 ++-- test/parallel/test-buffer-sharedarraybuffer.js | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/buffer.js b/lib/buffer.js index 495b521def7..d2f530a2909 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 47b3a59b865..f1bac72079b 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}));