summaryrefslogtreecommitdiff
path: root/src/vm/exceptmacros.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/exceptmacros.h')
-rw-r--r--src/vm/exceptmacros.h11
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