aboutsummaryrefslogtreecommitdiff
path: root/src/backend/regex/regexec.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/regex/regexec.c')
-rw-r--r--src/backend/regex/regexec.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/backend/regex/regexec.c b/src/backend/regex/regexec.c
index 3748a9c1714..78ebdee39e4 100644
--- a/src/backend/regex/regexec.c
+++ b/src/backend/regex/regexec.c
@@ -487,19 +487,21 @@ cfindloop(struct vars * v,
*coldp = cold;
return er;
}
- if ((shorter) ? end == estop : end == begin)
- {
- /* no point in trying again */
- *coldp = cold;
- return REG_NOMATCH;
- }
- /* go around and try again */
+ /* try next shorter/longer match with same begin point */
if (shorter)
+ {
+ if (end == estop)
+ break; /* NOTE BREAK OUT */
estart = end + 1;
+ }
else
+ {
+ if (end == begin)
+ break; /* NOTE BREAK OUT */
estop = end - 1;
- }
- }
+ }
+ } /* end loop over endpoint positions */
+ } /* end loop over beginning positions */
} while (close < v->stop);
*coldp = cold;