mirror of
https://github.com/postgres/postgres.git
synced 2025-05-29 16:21:20 +03:00
relcache: Avoid memory leak on tables with no CHECK constraints
As complained about by Valgrind, in commit a379061a22a8 I failed to realize that I was causing rd_att->constr->check to become allocated when no CHECK constraints exist; previously it'd remain NULL. (This was my bug, not the mentioned commit author's). Fix by making the allocation conditional, and set ->check to NULL if unallocated. Reported-by: Yasir <yasir.hussain.shah@gmail.com> Reviewed-by: Tom Lane <tgl@sss.pgh.pa.us> Discussion: https://postgr.es/m/202505082025.57ijx3qrbx7u@alvherre.pgsql
This commit is contained in:
parent
7b2ad43426
commit
dc9a2d54fd
11
src/backend/utils/cache/relcache.c
vendored
11
src/backend/utils/cache/relcache.c
vendored
@ -4598,10 +4598,13 @@ CheckNNConstraintFetch(Relation relation)
|
||||
HeapTuple htup;
|
||||
int found = 0;
|
||||
|
||||
/* Allocate array with room for as many entries as expected */
|
||||
check = (ConstrCheck *)
|
||||
MemoryContextAllocZero(CacheMemoryContext,
|
||||
ncheck * sizeof(ConstrCheck));
|
||||
/* Allocate array with room for as many entries as expected, if needed */
|
||||
if (ncheck > 0)
|
||||
check = (ConstrCheck *)
|
||||
MemoryContextAllocZero(CacheMemoryContext,
|
||||
ncheck * sizeof(ConstrCheck));
|
||||
else
|
||||
check = NULL;
|
||||
|
||||
/* Search pg_constraint for relevant entries */
|
||||
ScanKeyInit(&skey[0],
|
||||
|
Loading…
x
Reference in New Issue
Block a user