Stop manual unescaping of script source data when preprocessing logs.

It appears that the fields are already being unescaped elsewhere,
perhaps by the JSON writer. So if we unescape when adding the source
filename and contents, unescaping will happen again later and plain
backslashes will be interpreted as escape codes.

Bug: v8:6240
Change-Id: Ic66b9017ae685d6dd12944ee8d254991e26fbd32
Reviewed-on: https://chromium-review.googlesource.com/1186625
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Bret Sepulveda <bsep@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55401}
This commit is contained in:
Bret Sepulveda 2018-08-23 15:21:32 +02:00 committed by Commit Bot
parent f1aef71dd5
commit 29879461ce

View File

@ -1002,33 +1002,10 @@ JsonProfile.prototype.addSourcePositions = function(
};
};
function unescapeString(s) {
s = s.split("\\");
for (var i = 1; i < s.length; i++) {
if (s[i] === "") {
// Double backslash.
s[i] = "\\";
} else if (i > 0 && s[i].startsWith("x")) {
// Escaped Ascii character.
s[i] = String.fromCharCode(parseInt(s[i].substring(1, 3), 16)) +
s[i].substring(3);
} else if (i > 0 && s[i].startsWith("u")) {
// Escaped unicode character.
s[i] = String.fromCharCode(parseInt(s[i].substring(1, 5), 16)) +
s[i].substring(5);
} else {
if (i > 0 && s[i - 1] !== "\\") {
printErr("Malformed source string");
}
}
}
return s.join("");
}
JsonProfile.prototype.addScriptSource = function(script, url, source) {
this.scripts_[script] = {
name : unescapeString(url),
source : unescapeString(source)
name : url,
source : source
};
};