From 928d28a7b326fb8f47ded5257ede7634fe44578b Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Thu, 10 May 2012 16:49:35 +0200 Subject: [PATCH] util: make _extend() more robust Add a better 'is object?' check, the old one let values like true slip through. --- lib/util.js | 2 +- test/simple/test-util.js | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/util.js b/lib/util.js index ce6aff496a4..50595fd3f7a 100644 --- a/lib/util.js +++ b/lib/util.js @@ -509,7 +509,7 @@ exports.inherits = function(ctor, superCtor) { exports._extend = function(origin, add) { // Don't do anything if add isn't an object - if (!add) return origin; + if (!add || typeof add !== 'object') return origin; var keys = Object.keys(add); var i = keys.length; diff --git a/test/simple/test-util.js b/test/simple/test-util.js index 87ee77509a9..7c30f5e83e5 100644 --- a/test/simple/test-util.js +++ b/test/simple/test-util.js @@ -69,3 +69,12 @@ assert.equal(false, util.isError({})); assert.equal(false, util.isError({ name: 'Error', message: '' })); assert.equal(false, util.isError([])); assert.equal(false, util.isError(Object.create(Error.prototype))); + +// _extend +assert.deepEqual(util._extend({a:1}), {a:1}); +assert.deepEqual(util._extend({a:1}, []), {a:1}); +assert.deepEqual(util._extend({a:1}, null), {a:1}); +assert.deepEqual(util._extend({a:1}, true), {a:1}); +assert.deepEqual(util._extend({a:1}, false), {a:1}); +assert.deepEqual(util._extend({a:1}, {b:2}), {a:1, b:2}); +assert.deepEqual(util._extend({a:1, b:2}, {b:3}), {a:1, b:3});