diff --git a/lib/util.js b/lib/util.js index a03e87449c..e3f47234de 100644 --- a/lib/util.js +++ b/lib/util.js @@ -413,7 +413,8 @@ function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { } else { name = name.replace(/'/g, "\\'") .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); + .replace(/(^"|"$)/g, "'") + .replace(/\\\\/g, '\\'); name = ctx.stylize(name, 'string'); } } diff --git a/test/simple/test-util-inspect.js b/test/simple/test-util-inspect.js index 86eceea932..474410e803 100644 --- a/test/simple/test-util-inspect.js +++ b/test/simple/test-util-inspect.js @@ -110,6 +110,21 @@ assert.doesNotThrow(function() { var x = { inspect: util.inspect }; assert.ok(util.inspect(x).indexOf('inspect') != -1); +// util.inspect should not display the escaped value of a key. +var w = { + '\\': 1, + '\\\\': 2, + '\\\\\\': 3, + '\\\\\\\\': 4, +} + +var y = ['a', 'b', 'c']; +y['\\\\\\'] = 'd'; + +assert.ok(util.inspect(w), + '{ \'\\\': 1, \'\\\\\': 2, \'\\\\\\\': 3, \'\\\\\\\\\': 4 }'); +assert.ok(util.inspect(y), '[ \'a\', \'b\', \'c\', \'\\\\\\\': \'d\' ]'); + // util.inspect.styles and util.inspect.colors function test_color_style(style, input, implicit) { var color_name = util.inspect.styles[style];