From: <dal...@us...> - 2015-11-28 22:18:43
|
Revision: 24166 http://sourceforge.net/p/jedit/svn/24166 Author: daleanson Date: 2015-11-28 22:18:41 +0000 (Sat, 28 Nov 2015) Log Message: ----------- Fix for bug #3937, issue with non-capturing groups in regex search and replace, added bounds checking to avoid index out of bounds exception. Modified Paths: -------------- jEdit/trunk/doc/CHANGES.txt jEdit/trunk/org/gjt/sp/jedit/search/PatternSearchMatcher.java Modified: jEdit/trunk/doc/CHANGES.txt =================================================================== --- jEdit/trunk/doc/CHANGES.txt 2015-11-28 21:49:32 UTC (rev 24165) +++ jEdit/trunk/doc/CHANGES.txt 2015-11-28 22:18:41 UTC (rev 24166) @@ -20,6 +20,9 @@ - Fix bug #3717, gutter lines not aligning with text area lines (Dale Anson) +- Fix bug #3937, issue with non-capturing groups in regex search and replace + (Dale Anson) + }}} {{{ Miscellaneous Modified: jEdit/trunk/org/gjt/sp/jedit/search/PatternSearchMatcher.java =================================================================== --- jEdit/trunk/org/gjt/sp/jedit/search/PatternSearchMatcher.java 2015-11-28 21:49:32 UTC (rev 24165) +++ jEdit/trunk/org/gjt/sp/jedit/search/PatternSearchMatcher.java 2015-11-28 22:18:41 UTC (rev 24166) @@ -255,7 +255,7 @@ { -- open_count; } - if (open_count == 0) + if (open_count == 0 && i < p.length() - 1) { int end = i + 1; char c = p.charAt( end ); @@ -263,7 +263,7 @@ // check for "{n,m}" quantifiers if (c == '{') { - while (c != '}') + while (c != '}' && end < p.length() - 1) { ++ end; c = p.charAt(end); @@ -273,14 +273,14 @@ // check for ?+* quanitifiers c = p.charAt(end); - if (c == '?' || c == '+' || c == '*') + if ((c == '?' || c == '+' || c == '*') && end < p.length() - 1) { ++ end; } // check for ?+ quantifier quantifiers c = p.charAt(end); - if (c == '?' || c == '+') + if ((c == '?' || c == '+') && end < p.length() - 1) { ++ end; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |