mirror of https://github.com/nodejs/node.git
src: only memcmp if length > 0 in Buffer::Compare
Both pointer arguments to memcmp are defined as non-null and compiler optimizes upon that. PR-URL: https://github.com/nodejs/node/pull/2544 Reviewed-By: trevnorris - Trevor Norris <trev.norris@gmail.com> Reviewed-By: thefourtheye - Sakthipriyan Vairamani <thechargingvolcano@gmail.com>pull/2620/head
parent
37ee43efd5
commit
e3740e4524
|
@ -835,7 +835,7 @@ void Compare(const FunctionCallbackInfo<Value> &args) {
|
|||
|
||||
size_t cmp_length = MIN(obj_a_length, obj_b_length);
|
||||
|
||||
int32_t val = memcmp(obj_a_data, obj_b_data, cmp_length);
|
||||
int val = cmp_length > 0 ? memcmp(obj_a_data, obj_b_data, cmp_length) : 0;
|
||||
|
||||
// Normalize val to be an integer in the range of [1, -1] since
|
||||
// implementations of memcmp() can vary by platform.
|
||||
|
|
|
@ -1137,6 +1137,9 @@ assert.equal(Buffer.compare(d, b), 1);
|
|||
assert.equal(Buffer.compare(b, d), -1);
|
||||
assert.equal(Buffer.compare(c, c), 0);
|
||||
|
||||
assert.equal(Buffer.compare(Buffer(0), Buffer(0)), 0);
|
||||
assert.equal(Buffer.compare(Buffer(0), Buffer(1)), -1);
|
||||
assert.equal(Buffer.compare(Buffer(1), Buffer(0)), 1);
|
||||
|
||||
assert.throws(function() {
|
||||
var b = new Buffer(1);
|
||||
|
|
Loading…
Reference in New Issue