Commit 3db05e76 authored by Tom Lane's avatar Tom Lane

Suppress compiler warning in new regex match-all detection code.

gcc 10 is smart enough to notice that control could reach this
"hasmatch[depth]" assignment with depth < 0, but not smart enough
to know that that would require a badly broken NFA graph.  Change
the assert() to a plain runtime test to shut it up.

Per report from Andres Freund.

Discussion: https://postgr.es/m/20210223173437.b3ywijygsy6q42gq@alap3.anarazel.de
parent d9d07622
...@@ -3082,8 +3082,13 @@ checkmatchall_recurse(struct nfa *nfa, struct state *s, ...@@ -3082,8 +3082,13 @@ checkmatchall_recurse(struct nfa *nfa, struct state *s,
{ {
/* We found an all-RAINBOW path to the post state */ /* We found an all-RAINBOW path to the post state */
result = true; result = true;
/* ... which should not be adjacent to the pre state */
if (depth < 0)
{
NERR(REG_ASSERT);
return false;
}
/* Record potential match lengths */ /* Record potential match lengths */
assert(depth >= 0);
hasmatch[depth] = true; hasmatch[depth] = true;
if (foundloop) if (foundloop)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment