diff options
Diffstat (limited to 'src/vm/exceptmacros.h')
-rw-r--r-- | src/vm/exceptmacros.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/vm/exceptmacros.h b/src/vm/exceptmacros.h index e712f217e7..3c426fd3bd 100644 --- a/src/vm/exceptmacros.h +++ b/src/vm/exceptmacros.h @@ -323,14 +323,21 @@ VOID DECLSPEC_NORETURN UnwindAndContinueRethrowHelperAfterCatch(Frame* pEntryFra VOID DECLSPEC_NORETURN DispatchManagedException(PAL_SEHException& ex); #define INSTALL_MANAGED_EXCEPTION_DISPATCHER \ - try { \ + PAL_SEHException exCopy; \ + bool hasCaughtException = false; \ + try { #define UNINSTALL_MANAGED_EXCEPTION_DISPATCHER \ } \ catch (PAL_SEHException& ex) \ { \ - DispatchManagedException(ex); \ + exCopy = ex; \ + hasCaughtException = true; \ } \ + if (hasCaughtException) \ + { \ + DispatchManagedException(exCopy); \ + } #else |