@@ -827,6 +827,15 @@ Exception *ExThrowWithInnerHelper(Exception *inner);
827827 } \
828828 SCAN_EHMARKER_END_TRY (); \
829829 } \
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+ } \
830839 PAL_CPP_CATCH_DERIVED (DerivedExceptionClass, __pExceptionRaw) \
831840 { \
832841 SCAN_EHMARKER_CATCH (); \
@@ -862,18 +871,34 @@ Exception *ExThrowWithInnerHelper(Exception *inner);
862871 PAL_CPP_TRY \
863872 { \
864873 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 \
869876 { \
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) \
873886
874887#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 (); \
876900 } \
901+ PAL_CPP_ENDTRY \
877902 SCAN_EHMARKER_END_TRY (); \
878903 } \
879904 PAL_CPP_CATCH_DERIVED (Exception, __pExceptionRaw) \
0 commit comments