* Added try/catch around regexp compilation
This commit is contained in:
parent
e2d5b1d01b
commit
bce8bb378a
1 changed files with 28 additions and 11 deletions
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
var re = new RegExp(needle, modifier);
|
try {
|
||||||
|
var re = new RegExp(needle, modifier);
|
||||||
|
}
|
||||||
|
catch(e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
return re;
|
return re;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue