Fix memory leak during regular expression execution.

For a regex containing backrefs, pg_regexec() might fail to free all the
sub-DFAs that were created during execution, resulting in a permanent
(session lifespan) memory leak.  Problem was introduced by me in commit
587359479a.  Per report from Sandro Santilli;
diagnosis by Greg Stark.
pull/6/head
Tom Lane 12 years ago
parent fb1d92a9fa
commit ea8c7e9054
  1. 1
      src/backend/regex/regexec.c

@ -259,6 +259,7 @@ pg_regexec(regex_t *re,
/* clean up */
if (v->pmatch != pmatch && v->pmatch != mat)
FREE(v->pmatch);
n = (size_t) v->g->ntree;
for (i = 0; i < n; i++)
{
if (v->subdfas[i] != NULL)

Loading…
Cancel
Save