Doh --- what's really happening on buildfarm member grebe is that its

malloc returns NULL for malloc(0).  Defend against that case.
This commit is contained in:
Tom Lane 2007-09-22 04:37:53 +00:00
parent e152893305
commit 94470b9499
1 changed files with 6 additions and 4 deletions

View File

@ -8,7 +8,7 @@
* *
* *
* IDENTIFICATION * IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.74 2007/09/21 22:52:52 tgl Exp $ * $PostgreSQL: pgsql/src/backend/utils/adt/regexp.c,v 1.75 2007/09/22 04:37:53 tgl Exp $
* *
* Alistair Crooks added the code for the regex caching * Alistair Crooks added the code for the regex caching
* agc - cached the regular expressions used - there's a good chance * agc - cached the regular expressions used - there's a good chance
@ -195,10 +195,12 @@ RE_compile_and_cache(text *text_re, int cflags)
} }
/* /*
* use malloc/free for the cre_pat field because the storage has to * We use malloc/free for the cre_pat field because the storage has to
* persist across transactions * persist across transactions, and because we want to get control back
* on out-of-memory. The Max() is because some malloc implementations
* return NULL for malloc(0).
*/ */
re_temp.cre_pat = malloc(text_re_len); re_temp.cre_pat = malloc(Max(text_re_len, 1));
if (re_temp.cre_pat == NULL) if (re_temp.cre_pat == NULL)
{ {
pg_regfree(&re_temp.cre_re); pg_regfree(&re_temp.cre_re);