More bulletproof util.inspect()
function.
Use the *real* versions of the Date and RegExp functions, from the prototype. This defends against code like: var d = new Date() d.toUTCString = null util.inspect(d) // TypeError: toUTCString is not a function Fixes #1944.
This commit is contained in:
parent
d4379fcee3
commit
ebefe77bc0
10
lib/util.js
10
lib/util.js
@ -180,10 +180,10 @@ function formatValue(ctx, value, recurseTimes) {
|
|||||||
return ctx.stylize('[Function' + name + ']', 'special');
|
return ctx.stylize('[Function' + name + ']', 'special');
|
||||||
}
|
}
|
||||||
if (isRegExp(value)) {
|
if (isRegExp(value)) {
|
||||||
return ctx.stylize('' + value, 'regexp');
|
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
|
||||||
}
|
}
|
||||||
if (isDate(value)) {
|
if (isDate(value)) {
|
||||||
return ctx.stylize(value.toUTCString(), 'date');
|
return ctx.stylize(Date.prototype.toUTCString.call(value), 'date');
|
||||||
}
|
}
|
||||||
if (isError(value)) {
|
if (isError(value)) {
|
||||||
return formatError(value);
|
return formatError(value);
|
||||||
@ -206,12 +206,12 @@ function formatValue(ctx, value, recurseTimes) {
|
|||||||
|
|
||||||
// Make RegExps say that they are RegExps
|
// Make RegExps say that they are RegExps
|
||||||
if (isRegExp(value)) {
|
if (isRegExp(value)) {
|
||||||
base = ' ' + value;
|
base = ' ' + RegExp.prototype.toString.call(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make dates with properties first say the date
|
// Make dates with properties first say the date
|
||||||
if (isDate(value)) {
|
if (isDate(value)) {
|
||||||
base = ' ' + value.toUTCString();
|
base = ' ' + Date.prototype.toUTCString.call(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make error with message first say the error
|
// Make error with message first say the error
|
||||||
@ -225,7 +225,7 @@ function formatValue(ctx, value, recurseTimes) {
|
|||||||
|
|
||||||
if (recurseTimes < 0) {
|
if (recurseTimes < 0) {
|
||||||
if (isRegExp(value)) {
|
if (isRegExp(value)) {
|
||||||
return ctx.stylize('' + value, 'regexp');
|
return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
|
||||||
} else {
|
} else {
|
||||||
return ctx.stylize('[Object]', 'special');
|
return ctx.stylize('[Object]', 'special');
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user