diff --git a/src/backend/regex/regexec.c b/src/backend/regex/regexec.c index f7eaa76b02c..47043badf77 100644 --- a/src/backend/regex/regexec.c +++ b/src/backend/regex/regexec.c @@ -1098,8 +1098,8 @@ citerdissect(struct vars *v, * Our strategy is to first find a set of sub-match endpoints that are * valid according to the child node's DFA, and then recursively dissect * each sub-match to confirm validity. If any validity check fails, - * backtrack the last sub-match and try again. And, when we next try for - * a validity check, we need not recheck any successfully verified + * backtrack that sub-match and try again. And, when we next try for a + * validity check, we need not recheck any successfully verified * sub-matches that we didn't move the endpoints of. nverified remembers * how many sub-matches are currently known okay. */ @@ -1187,12 +1187,13 @@ citerdissect(struct vars *v, return REG_OKAY; } - /* match failed to verify, so backtrack */ + /* i'th match failed to verify, so backtrack it */ + k = i; backtrack: /* - * Must consider shorter versions of the current sub-match. However, + * Must consider shorter versions of the k'th sub-match. However, * we'll only ask for a zero-length match if necessary. */ while (k > 0) @@ -1299,8 +1300,8 @@ creviterdissect(struct vars *v, * Our strategy is to first find a set of sub-match endpoints that are * valid according to the child node's DFA, and then recursively dissect * each sub-match to confirm validity. If any validity check fails, - * backtrack the last sub-match and try again. And, when we next try for - * a validity check, we need not recheck any successfully verified + * backtrack that sub-match and try again. And, when we next try for a + * validity check, we need not recheck any successfully verified * sub-matches that we didn't move the endpoints of. nverified remembers * how many sub-matches are currently known okay. */ @@ -1394,12 +1395,13 @@ creviterdissect(struct vars *v, return REG_OKAY; } - /* match failed to verify, so backtrack */ + /* i'th match failed to verify, so backtrack it */ + k = i; backtrack: /* - * Must consider longer versions of the current sub-match. + * Must consider longer versions of the k'th sub-match. */ while (k > 0) {