зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1081175 - Replace vector instead of appending to it in ChoiceNode::FilterASCII to fix a bad performance issue. r=bhackett
This commit is contained in:
Родитель
487b07800b
Коммит
bd95f4b618
|
@ -1001,7 +1001,7 @@ ChoiceNode::FilterASCII(int depth, bool ignore_case)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
alternatives_.appendAll(new_alternatives);
|
alternatives_ = Move(new_alternatives);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,20 @@
|
||||||
|
var input = "webkit-search-cancel-button-aaaaaaa-bbbbb-ccccccc-dddddddd,"
|
||||||
|
var bad_regex = '([a-u-]|\\u0080|\\u0100)*[d]';
|
||||||
|
|
||||||
|
function forceUnicode(s) {
|
||||||
|
return ('\uffff' + s).replace(/^\uffff/, '');
|
||||||
|
}
|
||||||
|
function testRegex(input) {
|
||||||
|
for (var i = 0; i < input.length; i++) {
|
||||||
|
var sub = input.substring(0, i + 1);
|
||||||
|
var res = sub.match(bad_regex);
|
||||||
|
if (i >= 50) {
|
||||||
|
assertEq(res.length, 2);
|
||||||
|
assertEq(res[1], sub.substr(-2, 1));
|
||||||
|
} else {
|
||||||
|
assertEq(res, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
testRegex(input);
|
||||||
|
testRegex(forceUnicode(input));
|
Загрузка…
Ссылка в новой задаче