diff options
Diffstat (limited to 'src/backend/regex/regc_nfa.c')
-rw-r--r-- | src/backend/regex/regc_nfa.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/backend/regex/regc_nfa.c b/src/backend/regex/regc_nfa.c index 27998d688a8..e474e48c28c 100644 --- a/src/backend/regex/regc_nfa.c +++ b/src/backend/regex/regc_nfa.c @@ -180,7 +180,7 @@ newstate(struct nfa * nfa) /* * This is a handy place to check for operation cancel during regex * compilation, since no code path will go very long without making a new - * state. + * state or arc. */ if (CANCEL_REQUESTED(nfa->v->re)) { @@ -333,6 +333,17 @@ newarc(struct nfa * nfa, assert(from != NULL && to != NULL); + /* + * This is a handy place to check for operation cancel during regex + * compilation, since no code path will go very long without making a new + * state or arc. + */ + if (CANCEL_REQUESTED(nfa->v->re)) + { + NERR(REG_CANCEL); + return; + } + /* check for duplicates */ for (a = from->outs; a != NULL; a = a->outchain) if (a->to == to && a->co == co && a->type == t) |