From 57043aad3376d831731590d3cf47c75fb57e0949 Mon Sep 17 00:00:00 2001 From: Feross Aboukhadijeh Date: Sat, 6 Aug 2016 16:29:02 -0700 Subject: [PATCH] assert: fix deepEqual/deepStrictEqual on equivalent typed arrays The typed array's underlying ArrayBuffer is used in `Buffer.from`. Let's respect it's .byteOffset or .byteLength (i.e. position within the parent ArrayBuffer). Fixes: https://github.com/nodejs/node/issues/8001 PR-URL: https://github.com/nodejs/node/pull/8002 Reviewed-By: Anna Henningsen Reviewed-By: Prince John Wesley Reviewed-By: James M Snell Reviewed-By: Colin Ihrig --- lib/assert.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/assert.js b/lib/assert.js index ba316d38ff..8a316ffa79 100644 --- a/lib/assert.js +++ b/lib/assert.js @@ -180,8 +180,12 @@ function _deepEqual(actual, expected, strict, memos) { pToString(actual) === pToString(expected) && !(actual instanceof Float32Array || actual instanceof Float64Array)) { - return compare(Buffer.from(actual.buffer), - Buffer.from(expected.buffer)) === 0; + return compare(Buffer.from(actual.buffer, + actual.byteOffset, + actual.byteLength), + Buffer.from(expected.buffer, + expected.byteOffset, + expected.byteLength)) === 0; // 7.5 For all other Object pairs, including Array objects, equivalence is // determined by having the same number of owned properties (as verified