Browse Source

Fixed inverted group thrown off by quantifiers

Zher Huei Lee 8 years ago
parent
commit
f01ce3276e
1 changed files with 4 additions and 3 deletions
  1. 4 3
      modules/regex/regex.cpp

+ 4 - 3
modules/regex/regex.cpp

@@ -603,10 +603,8 @@ struct RegExNodeGroup : public RegExNode {
 
 
 			int res = childset[i]->test(s, pos);
 			int res = childset[i]->test(s, pos);
 
 
-			if (s.complete)
-				return res;
-
 			if (inverse) {
 			if (inverse) {
+				s.complete = false;
 				if (res < 0)
 				if (res < 0)
 					res = pos + 1;
 					res = pos + 1;
 				else
 				else
@@ -616,6 +614,9 @@ struct RegExNodeGroup : public RegExNode {
 					continue;
 					continue;
 			}
 			}
 
 
+			if (s.complete)
+				return res;
+
 			if (res >= 0) {
 			if (res >= 0) {
 				if (reset_pos)
 				if (reset_pos)
 					res = pos;
 					res = pos;