Piotr Caban : msvcr80: Update exceptions RTTI data to reflect it' s part of std namespace.

Alexandre Julliard julliard at winehq.org
Tue May 6 13:37:12 CDT 2014


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue May  6 16:24:49 2014 +0200

msvcr80: Update exceptions RTTI data to reflect it's part of std namespace.

---

 dlls/msvcr100/msvcr100.spec |    2 +-
 dlls/msvcr80/msvcr80.spec   |    2 +-
 dlls/msvcr90/msvcr90.spec   |    2 +-
 dlls/msvcrt/cpp.c           |   16 ++++++++++++++++
 4 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec
index 72cf6f3..0cc8fcb 100644
--- a/dlls/msvcr100/msvcr100.spec
+++ b/dlls/msvcr100/msvcr100.spec
@@ -226,7 +226,7 @@
 @ extern ??_7__non_rtti_object at std@@6B@ MSVCRT___non_rtti_object_vtable
 @ extern ??_7bad_cast at std@@6B@ MSVCRT_bad_cast_vtable
 @ extern ??_7bad_typeid at std@@6B@ MSVCRT_bad_typeid_vtable
-@ extern ??_7exception@@6B@ MSVCRT_exception_vtable
+@ extern ??_7exception@@6B@ MSVCRT_exception_old_vtable
 @ extern ??_7exception at std@@6B@ MSVCRT_exception_vtable
 @ stub -arch=win32 ??_F?$_SpinWait@$00 at details@Concurrency@@QAEXXZ
 @ stub -arch=win64 ??_F?$_SpinWait@$00 at details@Concurrency@@QEAAXXZ
diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec
index ef70cf1..13ea9f0 100644
--- a/dlls/msvcr80/msvcr80.spec
+++ b/dlls/msvcr80/msvcr80.spec
@@ -54,7 +54,7 @@
 @ extern ??_7__non_rtti_object at std@@6B@ MSVCRT___non_rtti_object_vtable
 @ extern ??_7bad_cast at std@@6B@ MSVCRT_bad_cast_vtable
 @ extern ??_7bad_typeid at std@@6B@ MSVCRT_bad_typeid_vtable
-@ extern ??_7exception@@6B@ MSVCRT_exception_vtable
+@ extern ??_7exception@@6B@ MSVCRT_exception_old_vtable
 @ extern ??_7exception at std@@6B@ MSVCRT_exception_vtable
 @ thiscall -arch=i386 ??_Fbad_cast at std@@QAEXXZ(ptr) MSVCRT_bad_cast_default_ctor
 @ cdecl -arch=win64 ??_Fbad_cast at std@@QEAAXXZ(ptr) MSVCRT_bad_cast_default_ctor
diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec
index 161d224..710cb15 100644
--- a/dlls/msvcr90/msvcr90.spec
+++ b/dlls/msvcr90/msvcr90.spec
@@ -54,7 +54,7 @@
 @ extern ??_7__non_rtti_object at std@@6B@ MSVCRT___non_rtti_object_vtable
 @ extern ??_7bad_cast at std@@6B@ MSVCRT_bad_cast_vtable
 @ extern ??_7bad_typeid at std@@6B@ MSVCRT_bad_typeid_vtable
-@ extern ??_7exception@@6B@ MSVCRT_exception_vtable
+@ extern ??_7exception@@6B@ MSVCRT_exception_old_vtable
 @ extern ??_7exception at std@@6B@ MSVCRT_exception_vtable
 @ thiscall -arch=i386 ??_Fbad_cast at std@@QAEXXZ(ptr) MSVCRT_bad_cast_default_ctor
 @ cdecl -arch=win64 ??_Fbad_cast at std@@QEAAXXZ(ptr) MSVCRT_bad_cast_default_ctor
diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c
index e392208..50c2681 100644
--- a/dlls/msvcrt/cpp.c
+++ b/dlls/msvcrt/cpp.c
@@ -658,6 +658,11 @@ __ASM_VTABLE(type_info,
 __ASM_VTABLE(exception,
         VTABLE_ADD_FUNC(MSVCRT_exception_vector_dtor)
         VTABLE_ADD_FUNC(MSVCRT_what_exception));
+#if _MSVCR_VER >= 80
+__ASM_VTABLE(exception_old,
+        VTABLE_ADD_FUNC(MSVCRT_exception_vector_dtor)
+        VTABLE_ADD_FUNC(MSVCRT_what_exception));
+#endif
 __ASM_VTABLE(bad_typeid,
         VTABLE_ADD_FUNC(MSVCRT_bad_typeid_vector_dtor)
         VTABLE_ADD_FUNC(MSVCRT_what_exception));
@@ -673,10 +678,18 @@ __ASM_VTABLE(__non_rtti_object,
 #endif
 
 DEFINE_RTTI_DATA0( type_info, 0, ".?AVtype_info@@" )
+#if _MSVCR_VER >= 80
+DEFINE_RTTI_DATA0( exception, 0, ".?AVexception at std@@" )
+DEFINE_RTTI_DATA0( exception_old, 0, ".?AVexception@@" )
+DEFINE_RTTI_DATA1( bad_typeid, 0, &exception_rtti_base_descriptor, ".?AVbad_typeid at std@@" )
+DEFINE_RTTI_DATA1( bad_cast, 0, &exception_rtti_base_descriptor, ".?AVbad_cast at std@@" )
+DEFINE_RTTI_DATA2( __non_rtti_object, 0, &bad_typeid_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AV__non_rtti_object at std@@" )
+#else
 DEFINE_RTTI_DATA0( exception, 0, ".?AVexception@@" )
 DEFINE_RTTI_DATA1( bad_typeid, 0, &exception_rtti_base_descriptor, ".?AVbad_typeid@@" )
 DEFINE_RTTI_DATA1( bad_cast, 0, &exception_rtti_base_descriptor, ".?AVbad_cast@@" )
 DEFINE_RTTI_DATA2( __non_rtti_object, 0, &bad_typeid_rtti_base_descriptor, &exception_rtti_base_descriptor, ".?AV__non_rtti_object@@" )
+#endif
 
 DEFINE_EXCEPTION_TYPE_INFO( exception, 0, NULL, NULL )
 DEFINE_EXCEPTION_TYPE_INFO( bad_typeid, 1, &exception_cxx_type_info, NULL )
@@ -688,6 +701,9 @@ void msvcrt_init_exception(void *base)
 #ifdef __x86_64__
     init_type_info_rtti(base);
     init_exception_rtti(base);
+#if _MSVCR_VER >= 80
+    init_exception_old_rtti(base);
+#endif
     init_bad_typeid_rtti(base);
     init_bad_cast_rtti(base);
     init___non_rtti_object_rtti(base);




More information about the wine-cvs mailing list