@@ -827,6 +827,15 @@ Exception *ExThrowWithInnerHelper(Exception *inner);
827
827
} \
828
828
SCAN_EHMARKER_END_TRY (); \
829
829
} \
830
+ PAL_CPP_CATCH_NON_DERIVED_NOARG (const std::bad_alloc&) \
831
+ { \
832
+ SCAN_EHMARKER_CATCH (); \
833
+ __state.SetCaughtCxx (); \
834
+ __state.m_pExceptionPtr = Exception::GetOOMException (); \
835
+ SCAN_EHMARKER_END_CATCH (); \
836
+ SCAN_IGNORE_THROW_MARKER; \
837
+ ThrowOutOfMemory (); \
838
+ } \
830
839
PAL_CPP_CATCH_DERIVED (DerivedExceptionClass, __pExceptionRaw) \
831
840
{ \
832
841
SCAN_EHMARKER_CATCH (); \
@@ -862,18 +871,34 @@ Exception *ExThrowWithInnerHelper(Exception *inner);
862
871
PAL_CPP_TRY \
863
872
{ \
864
873
SCAN_EHMARKER_TRY (); \
865
- CAutoTryCleanup<STATETYPE> __autoCleanupTry (__state); \
866
- /* prevent annotations from being dropped by optimizations in debug */ \
867
- INDEBUG (static bool __alwayszero;) \
868
- INDEBUG (VolatileLoad (&__alwayszero);) \
874
+ SCAN_EHMARKER (); \
875
+ PAL_CPP_TRY \
869
876
{ \
870
- /* Disallow returns to make exception handling work. */ \
871
- /* Some work is done after the catch, see EX_ENDTRY. */ \
872
- DEBUG_ASSURE_NO_RETURN_BEGIN (EX_TRY) \
877
+ SCAN_EHMARKER_TRY (); \
878
+ CAutoTryCleanup<STATETYPE> __autoCleanupTry (__state); \
879
+ /* prevent annotations from being dropped by optimizations in debug */ \
880
+ INDEBUG (static bool __alwayszero;) \
881
+ INDEBUG (VolatileLoad (&__alwayszero);) \
882
+ { \
883
+ /* Disallow returns to make exception handling work. */ \
884
+ /* Some work is done after the catch, see EX_ENDTRY. */ \
885
+ DEBUG_ASSURE_NO_RETURN_BEGIN (EX_TRY) \
873
886
874
887
#define EX_CATCH_IMPL_CPP_ONLY \
875
- DEBUG_ASSURE_NO_RETURN_END (EX_TRY) \
888
+ DEBUG_ASSURE_NO_RETURN_END (EX_TRY) \
889
+ } \
890
+ SCAN_EHMARKER_END_TRY (); \
891
+ } \
892
+ PAL_CPP_CATCH_NON_DERIVED_NOARG (const std::bad_alloc&) \
893
+ { \
894
+ SCAN_EHMARKER_CATCH (); \
895
+ __state.SetCaughtCxx (); \
896
+ __state.m_pExceptionPtr = Exception::GetOOMException (); \
897
+ SCAN_EHMARKER_END_CATCH (); \
898
+ SCAN_IGNORE_THROW_MARKER; \
899
+ ThrowOutOfMemory (); \
876
900
} \
901
+ PAL_CPP_ENDTRY \
877
902
SCAN_EHMARKER_END_TRY (); \
878
903
} \
879
904
PAL_CPP_CATCH_DERIVED (Exception, __pExceptionRaw) \
0 commit comments