Piotr Caban : msvcrt: Handle non c++ exceptions in __DestructExceptionObject.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 18 08:33:04 CDT 2016


Module: wine
Branch: master
Commit: 856f0f9d13af93d2d0b1d36fcf3f8dc976a4f4f8
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=856f0f9d13af93d2d0b1d36fcf3f8dc976a4f4f8

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Mar 18 12:40:25 2016 +0100

msvcrt: Handle non c++ exceptions in __DestructExceptionObject.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/except.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/dlls/msvcrt/except.c b/dlls/msvcrt/except.c
index 09f42f0..fc0e36e 100644
--- a/dlls/msvcrt/except.c
+++ b/dlls/msvcrt/except.c
@@ -400,6 +400,15 @@ void CDECL __DestructExceptionObject(EXCEPTION_RECORD *rec)
 
     TRACE("(%p)\n", rec);
 
+    if (rec->ExceptionCode != CXX_EXCEPTION) return;
+#ifndef __x86_64__
+    if (rec->NumberParameters != 3) return;
+#else
+    if (rec->NumberParameters != 4) return;
+#endif
+    if (rec->ExceptionInformation[0] < CXX_FRAME_MAGIC_VC6 ||
+            rec->ExceptionInformation[0] > CXX_FRAME_MAGIC_VC8) return;
+
     if (!info || !info->destructor)
         return;
 




More information about the wine-cvs mailing list