msvcrt: Destroy thrown c++ object before calling handler in _except_handler4_common.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
diff --git a/dlls/msvcrt/except_i386.c b/dlls/msvcrt/except_i386.c
index 7d7ec75..418c68b 100644
--- a/dlls/msvcrt/except_i386.c
+++ b/dlls/msvcrt/except_i386.c
@@ -950,6 +950,8 @@
 
                 if (retval == EXCEPTION_EXECUTE_HANDLER)
                 {
+                    __DestructExceptionObject(rec);
+
                     /* Unwind all higher frames, this one will handle the exception */
                     _global_unwind2((EXCEPTION_REGISTRATION_RECORD*)frame);
                     msvcrt_local_unwind4( cookie, frame, trylevel, &frame->_ebp );
diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h
index fafdc6b..b564dc1 100644
--- a/dlls/msvcrt/msvcrt.h
+++ b/dlls/msvcrt/msvcrt.h
@@ -219,6 +219,7 @@
 
 BOOL __cdecl __CxxRegisterExceptionObject(EXCEPTION_RECORD**, cxx_frame_info*);
 void __cdecl __CxxUnregisterExceptionObject(cxx_frame_info*, BOOL);
+void CDECL __DestructExceptionObject(EXCEPTION_RECORD*);
 
 /* TLS data */
 extern DWORD msvcrt_tls_index DECLSPEC_HIDDEN;