diff options
author | Nathan Rajlich <nathan@tootallnate.net> | 2012-09-08 15:09:59 -0700 |
---|---|---|
committer | Nathan Rajlich <nathan@tootallnate.net> | 2012-09-08 15:09:59 -0700 |
commit | fb383a0ad08470d2a50923c7f3baa3a59a530026 (patch) | |
tree | 0c7c62709729836ba2581988e8b6b73b6c98dea6 | |
parent | 9a3521cb25e5f0035cf38ed7b16729c8d0dc3c65 (diff) | |
download | node-new-fb383a0ad08470d2a50923c7f3baa3a59a530026.tar.gz |
util: make util.inspect() work when "hasOwnProperty" is overwritten
-rw-r--r-- | lib/util.js | 8 | ||||
-rw-r--r-- | test/simple/test-util-inspect.js | 7 |
2 files changed, 13 insertions, 2 deletions
diff --git a/lib/util.js b/lib/util.js index 53775e74da..d9a5c2b227 100644 --- a/lib/util.js +++ b/lib/util.js @@ -318,7 +318,7 @@ function formatError(value) { function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { var output = []; for (var i = 0, l = value.length; i < l; ++i) { - if (Object.prototype.hasOwnProperty.call(value, String(i))) { + if (hasOwnProperty(value, String(i))) { output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true)); } else { @@ -349,7 +349,7 @@ function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { str = ctx.stylize('[Setter]', 'special'); } } - if (!visibleKeys.hasOwnProperty(key)) { + if (!hasOwnProperty(visibleKeys, key)) { name = '[' + key + ']'; } if (!str) { @@ -556,3 +556,7 @@ exports._extend = function(origin, add) { } return origin; }; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} diff --git a/test/simple/test-util-inspect.js b/test/simple/test-util-inspect.js index 5b8fed9fff..b6f5bfa8dc 100644 --- a/test/simple/test-util-inspect.js +++ b/test/simple/test-util-inspect.js @@ -107,3 +107,10 @@ assert.doesNotThrow(function() { // GH-2225 var x = { inspect: util.inspect }; assert.ok(util.inspect(x).indexOf('inspect') != -1); + +// an object with "hasOwnProperty" overwritten should not throw +assert.doesNotThrow(function() { + util.inspect({ + hasOwnProperty: null + }); +}); |