@@ -623,6 +623,15 @@ MemoryContextAlloc(MemoryContext context, Size size)
623
623
context -> isReset = false;
624
624
625
625
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
+
626
635
VALGRIND_MEMPOOL_ALLOC (context , ret , size );
627
636
628
637
return ret ;
@@ -649,6 +658,15 @@ MemoryContextAllocZero(MemoryContext context, Size size)
649
658
context -> isReset = false;
650
659
651
660
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
+
652
670
VALGRIND_MEMPOOL_ALLOC (context , ret , size );
653
671
654
672
MemSetAligned (ret , 0 , size );
@@ -677,6 +695,15 @@ MemoryContextAllocZeroAligned(MemoryContext context, Size size)
677
695
context -> isReset = false;
678
696
679
697
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
+
680
707
VALGRIND_MEMPOOL_ALLOC (context , ret , size );
681
708
682
709
MemSetLoop (ret , 0 , size );
@@ -699,6 +726,15 @@ palloc(Size size)
699
726
CurrentMemoryContext -> isReset = false;
700
727
701
728
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
+
702
738
VALGRIND_MEMPOOL_ALLOC (CurrentMemoryContext , ret , size );
703
739
704
740
return ret ;
@@ -719,6 +755,15 @@ palloc0(Size size)
719
755
CurrentMemoryContext -> isReset = false;
720
756
721
757
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
+
722
767
VALGRIND_MEMPOOL_ALLOC (CurrentMemoryContext , ret , size );
723
768
724
769
MemSetAligned (ret , 0 , size );
@@ -789,6 +834,12 @@ repalloc(void *pointer, Size size)
789
834
Assert (!context -> isReset );
790
835
791
836
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
+
792
843
VALGRIND_MEMPOOL_CHANGE (context , pointer , ret , size );
793
844
794
845
return ret ;
@@ -814,6 +865,15 @@ MemoryContextAllocHuge(MemoryContext context, Size size)
814
865
context -> isReset = false;
815
866
816
867
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
+
817
877
VALGRIND_MEMPOOL_ALLOC (context , ret , size );
818
878
819
879
return ret ;
@@ -854,6 +914,12 @@ repalloc_huge(void *pointer, Size size)
854
914
Assert (!context -> isReset );
855
915
856
916
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
+
857
923
VALGRIND_MEMPOOL_CHANGE (context , pointer , ret , size );
858
924
859
925
return ret ;
0 commit comments