summaryrefslogtreecommitdiff
path: root/src/vm/exceptmacros.h
diff options
context:
space:
mode:
authorJan Vorlicek <janvorli@microsoft.com>2015-09-08 14:50:24 +0200
committerJan Vorlicek <janvorli@microsoft.com>2015-09-08 14:50:24 +0200
commit508454cc76e1bd35c07521ebfc73617c00c5bcb3 (patch)
tree5244f456977e118ad3e0d8ab6bfd1e48fa67dd41 /src/vm/exceptmacros.h
parentf7552e5a5076b63d88886f9d4ec5c781508e307e (diff)
parent88cf961965911b21f26699ac35ad5223e6f4496a (diff)
downloadcoreclr-508454cc76e1bd35c07521ebfc73617c00c5bcb3.tar.gz
coreclr-508454cc76e1bd35c07521ebfc73617c00c5bcb3.tar.bz2
coreclr-508454cc76e1bd35c07521ebfc73617c00c5bcb3.zip
Merge pull request #1496 from janvorli/fix-exception-memleak
Fix memory leak from managed exceptions
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