diff options
author | Jan Vorlicek <janvorli@microsoft.com> | 2015-09-08 14:50:24 +0200 |
---|---|---|
committer | Jan Vorlicek <janvorli@microsoft.com> | 2015-09-08 14:50:24 +0200 |
commit | 508454cc76e1bd35c07521ebfc73617c00c5bcb3 (patch) | |
tree | 5244f456977e118ad3e0d8ab6bfd1e48fa67dd41 /src/vm/exceptmacros.h | |
parent | f7552e5a5076b63d88886f9d4ec5c781508e307e (diff) | |
parent | 88cf961965911b21f26699ac35ad5223e6f4496a (diff) | |
download | coreclr-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.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 |