@@ -623,6 +623,15 @@ MemoryContextAlloc(MemoryContext context, Size size)
623623 context -> isReset = false;
624624
625625 ret = (* context -> methods -> alloc ) (context , size );
626+ if (ret == NULL )
627+ {
628+ MemoryContextStats (TopMemoryContext );
629+ ereport (ERROR ,
630+ (errcode (ERRCODE_OUT_OF_MEMORY ),
631+ errmsg ("out of memory" ),
632+ errdetail ("Failed on request of size %zu." , size )));
633+ }
634+
626635 VALGRIND_MEMPOOL_ALLOC (context , ret , size );
627636
628637 return ret ;
@@ -649,6 +658,15 @@ MemoryContextAllocZero(MemoryContext context, Size size)
649658 context -> isReset = false;
650659
651660 ret = (* context -> methods -> alloc ) (context , size );
661+ if (ret == NULL )
662+ {
663+ MemoryContextStats (TopMemoryContext );
664+ ereport (ERROR ,
665+ (errcode (ERRCODE_OUT_OF_MEMORY ),
666+ errmsg ("out of memory" ),
667+ errdetail ("Failed on request of size %zu." , size )));
668+ }
669+
652670 VALGRIND_MEMPOOL_ALLOC (context , ret , size );
653671
654672 MemSetAligned (ret , 0 , size );
@@ -677,6 +695,15 @@ MemoryContextAllocZeroAligned(MemoryContext context, Size size)
677695 context -> isReset = false;
678696
679697 ret = (* context -> methods -> alloc ) (context , size );
698+ if (ret == NULL )
699+ {
700+ MemoryContextStats (TopMemoryContext );
701+ ereport (ERROR ,
702+ (errcode (ERRCODE_OUT_OF_MEMORY ),
703+ errmsg ("out of memory" ),
704+ errdetail ("Failed on request of size %zu." , size )));
705+ }
706+
680707 VALGRIND_MEMPOOL_ALLOC (context , ret , size );
681708
682709 MemSetLoop (ret , 0 , size );
@@ -699,6 +726,15 @@ palloc(Size size)
699726 CurrentMemoryContext -> isReset = false;
700727
701728 ret = (* CurrentMemoryContext -> methods -> alloc ) (CurrentMemoryContext , size );
729+ if (ret == NULL )
730+ {
731+ MemoryContextStats (TopMemoryContext );
732+ ereport (ERROR ,
733+ (errcode (ERRCODE_OUT_OF_MEMORY ),
734+ errmsg ("out of memory" ),
735+ errdetail ("Failed on request of size %zu." , size )));
736+ }
737+
702738 VALGRIND_MEMPOOL_ALLOC (CurrentMemoryContext , ret , size );
703739
704740 return ret ;
@@ -719,6 +755,15 @@ palloc0(Size size)
719755 CurrentMemoryContext -> isReset = false;
720756
721757 ret = (* CurrentMemoryContext -> methods -> alloc ) (CurrentMemoryContext , size );
758+ if (ret == NULL )
759+ {
760+ MemoryContextStats (TopMemoryContext );
761+ ereport (ERROR ,
762+ (errcode (ERRCODE_OUT_OF_MEMORY ),
763+ errmsg ("out of memory" ),
764+ errdetail ("Failed on request of size %zu." , size )));
765+ }
766+
722767 VALGRIND_MEMPOOL_ALLOC (CurrentMemoryContext , ret , size );
723768
724769 MemSetAligned (ret , 0 , size );
@@ -789,6 +834,12 @@ repalloc(void *pointer, Size size)
789834 Assert (!context -> isReset );
790835
791836 ret = (* context -> methods -> realloc ) (context , pointer , size );
837+ if (ret == NULL )
838+ ereport (ERROR ,
839+ (errcode (ERRCODE_OUT_OF_MEMORY ),
840+ errmsg ("out of memory" ),
841+ errdetail ("Failed on request of size %zu." , size )));
842+
792843 VALGRIND_MEMPOOL_CHANGE (context , pointer , ret , size );
793844
794845 return ret ;
@@ -814,6 +865,15 @@ MemoryContextAllocHuge(MemoryContext context, Size size)
814865 context -> isReset = false;
815866
816867 ret = (* context -> methods -> alloc ) (context , size );
868+ if (ret == NULL )
869+ {
870+ MemoryContextStats (TopMemoryContext );
871+ ereport (ERROR ,
872+ (errcode (ERRCODE_OUT_OF_MEMORY ),
873+ errmsg ("out of memory" ),
874+ errdetail ("Failed on request of size %zu." , size )));
875+ }
876+
817877 VALGRIND_MEMPOOL_ALLOC (context , ret , size );
818878
819879 return ret ;
@@ -854,6 +914,12 @@ repalloc_huge(void *pointer, Size size)
854914 Assert (!context -> isReset );
855915
856916 ret = (* context -> methods -> realloc ) (context , pointer , size );
917+ if (ret == NULL )
918+ ereport (ERROR ,
919+ (errcode (ERRCODE_OUT_OF_MEMORY ),
920+ errmsg ("out of memory" ),
921+ errdetail ("Failed on request of size %zu." , size )));
922+
857923 VALGRIND_MEMPOOL_CHANGE (context , pointer , ret , size );
858924
859925 return ret ;
0 commit comments