* Added try/catch around regexp compilation

This commit is contained in:
Ruben Daniels 2012-05-07 17:45:48 -07:00
commit bce8bb378a

View file

@ -116,11 +116,12 @@ Search.SELECTION = 2;
if (!this.$options.needle) if (!this.$options.needle)
return null; return null;
if (this.$options.backwards) { var iterator = this.$options.backwards
var iterator = this.$backwardMatchIterator(session); ? this.$backwardMatchIterator(session)
} else { : this.$forwardMatchIterator(session);
iterator = this.$forwardMatchIterator(session);
} if (!iterator)
return false;
var firstRange = null; var firstRange = null;
iterator.forEach(function(range) { iterator.forEach(function(range) {
@ -143,11 +144,12 @@ Search.SELECTION = 2;
if (!options.needle) if (!options.needle)
return []; return [];
if (options.backwards) { var iterator = options.backwards
var iterator = this.$backwardMatchIterator(session); ? this.$backwardMatchIterator(session)
} else { : this.$forwardMatchIterator(session);
iterator = this.$forwardMatchIterator(session);
} if (!iterator)
return false;
var ignoreCursor = !options.start && options.wrap && options.scope == Search.ALL; var ignoreCursor = !options.start && options.wrap && options.scope == Search.ALL;
if (ignoreCursor) if (ignoreCursor)
@ -178,6 +180,9 @@ Search.SELECTION = 2;
**/ **/
this.replace = function(input, replacement) { this.replace = function(input, replacement) {
var re = this.$assembleRegExp(); var re = this.$assembleRegExp();
if (!re)
return;
var match = re.exec(input); var match = re.exec(input);
if (match && match[0].length == input.length) { if (match && match[0].length == input.length) {
if (this.$options.regExp) { if (this.$options.regExp) {
@ -199,6 +204,9 @@ Search.SELECTION = 2;
**/ **/
this.$forwardMatchIterator = function(session) { this.$forwardMatchIterator = function(session) {
var re = this.$assembleRegExp(); var re = this.$assembleRegExp();
if (!re)
return false;
var self = this; var self = this;
return { return {
@ -240,6 +248,9 @@ Search.SELECTION = 2;
**/ **/
this.$backwardMatchIterator = function(session) { this.$backwardMatchIterator = function(session) {
var re = this.$assembleRegExp(); var re = this.$assembleRegExp();
if (!re)
return false;
var self = this; var self = this;
return { return {
@ -293,7 +304,13 @@ Search.SELECTION = 2;
modifier += "i"; modifier += "i";
} }
try {
var re = new RegExp(needle, modifier); var re = new RegExp(needle, modifier);
}
catch(e) {
return false;
}
return re; return re;
}; };