From 38a07a929bb551451b21513ce6262f416651d12b Mon Sep 17 00:00:00 2001 From: Tom Gallacher Date: Fri, 10 Jan 2014 19:53:47 +0000 Subject: [PATCH] util: handle escaped forward slashes correctly Fixes #6835 --- lib/util.js | 3 ++- test/simple/test-util-inspect.js | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) 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];