msvcrt: Handle non c++ exceptions in __DestructExceptionObject.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
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 @@
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;