mirror of
https://github.com/postgres/postgres.git
synced 2025-07-26 01:22:12 +03:00
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
This commit is contained in:
@ -1356,7 +1356,8 @@ palloc0(Size size)
|
|||||||
context->isReset = false;
|
context->isReset = false;
|
||||||
|
|
||||||
ret = context->methods->alloc(context, size, 0);
|
ret = context->methods->alloc(context, size, 0);
|
||||||
|
/* We expect OOM to be handled by the alloc function */
|
||||||
|
Assert(ret != NULL);
|
||||||
VALGRIND_MEMPOOL_ALLOC(context, ret, size);
|
VALGRIND_MEMPOOL_ALLOC(context, ret, size);
|
||||||
|
|
||||||
MemSetAligned(ret, 0, size);
|
MemSetAligned(ret, 0, size);
|
||||||
@ -1379,6 +1380,8 @@ palloc_extended(Size size, int flags)
|
|||||||
ret = context->methods->alloc(context, size, flags);
|
ret = context->methods->alloc(context, size, flags);
|
||||||
if (unlikely(ret == NULL))
|
if (unlikely(ret == NULL))
|
||||||
{
|
{
|
||||||
|
/* NULL can be returned only when using MCXT_ALLOC_NO_OOM */
|
||||||
|
Assert(flags & MCXT_ALLOC_NO_OOM);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user