Skip to content

Commit 40d3f82

Browse files
committed
Add more assertions in palloc0() and palloc_extended()
palloc() includes an assertion checking that an alloc() implementation never returns NULL for all MemoryContextMethods. This commit adds a similar assertion in palloc0(). In palloc_extend(), a different assertion is added, checking that MCXT_ALLOC_NO_OOM is set when an alloc() routine returns NULL. These additions can be useful to catch errors when implementing a new set of MemoryContextMethods routines. Author: Andreas Karlsson <andreas@proxel.se> Discussion: https://postgr.es/m/507e8eba-2035-4a12-a777-98199a66beb8@proxel.se
1 parent ba57dcf commit 40d3f82

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

src/backend/utils/mmgr/mcxt.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1356,7 +1356,8 @@ palloc0(Size size)
13561356
context->isReset = false;
13571357

13581358
ret = context->methods->alloc(context, size, 0);
1359-
1359+
/* We expect OOM to be handled by the alloc function */
1360+
Assert(ret != NULL);
13601361
VALGRIND_MEMPOOL_ALLOC(context, ret, size);
13611362

13621363
MemSetAligned(ret, 0, size);
@@ -1379,6 +1380,8 @@ palloc_extended(Size size, int flags)
13791380
ret = context->methods->alloc(context, size, flags);
13801381
if (unlikely(ret == NULL))
13811382
{
1383+
/* NULL can be returned only when using MCXT_ALLOC_NO_OOM */
1384+
Assert(flags & MCXT_ALLOC_NO_OOM);
13821385
return NULL;
13831386
}
13841387

0 commit comments

Comments
 (0)