From 1cd1d7a182c2d16c28c778ddcd72bbeac6bc5c75 Mon Sep 17 00:00:00 2001 From: Vladimir Kurchatkin Date: Fri, 6 Feb 2015 18:54:29 +0300 Subject: [PATCH] buffer: don't compare same buffers PR-URL: https://github.com/iojs/io.js/pull/742 Reviewed-By: Ben Noordhuis Reviewed-By: Trevor Norris --- lib/buffer.js | 9 +++++++++ test/parallel/test-buffer.js | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/lib/buffer.js b/lib/buffer.js index 19208b3..02b3076 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -139,6 +139,9 @@ Buffer.compare = function compare(a, b) { !(b instanceof Buffer)) throw new TypeError('Arguments must be Buffers'); + if (a === b) + return 0; + return internal.compare(a, b); }; @@ -268,6 +271,9 @@ Buffer.prototype.equals = function equals(b) { if (!(b instanceof Buffer)) throw new TypeError('Argument must be a Buffer'); + if (this === b) + return true; + return internal.compare(this, b) === 0; }; @@ -289,6 +295,9 @@ Buffer.prototype.compare = function compare(b) { if (!(b instanceof Buffer)) throw new TypeError('Argument must be a Buffer'); + if (this === b) + return 0; + return internal.compare(this, b); }; diff --git a/test/parallel/test-buffer.js b/test/parallel/test-buffer.js index 3c25b8e..1c2c425 100644 --- a/test/parallel/test-buffer.js +++ b/test/parallel/test-buffer.js @@ -1128,11 +1128,14 @@ assert.equal(b.compare(c), -1); assert.equal(c.compare(d), 1); assert.equal(d.compare(b), 1); assert.equal(b.compare(d), -1); +assert.equal(b.compare(b), 0); assert.equal(Buffer.compare(b, c), -1); assert.equal(Buffer.compare(c, d), 1); assert.equal(Buffer.compare(d, b), 1); assert.equal(Buffer.compare(b, d), -1); +assert.equal(Buffer.compare(c, c), 0); + assert.throws(function() { var b = new Buffer(1); @@ -1158,6 +1161,7 @@ var e = new Buffer(6).fill('abcdef'); assert.ok(b.equals(c)); assert.ok(!c.equals(d)); assert.ok(!d.equals(e)); +assert.ok(d.equals(d)); assert.throws(function() { var b = new Buffer(1); -- 2.7.4