Piotr Caban : msvcrt: Fixed RTTI base pointer calculation if signature==0.

Alexandre Julliard julliard at winehq.org
Thu Sep 13 14:39:21 CDT 2012


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Sep 13 13:29:29 2012 +0200

msvcrt: Fixed RTTI base pointer calculation if signature==0.

---

 dlls/msvcrt/cpp.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/dlls/msvcrt/cpp.c b/dlls/msvcrt/cpp.c
index f8e0387..8a8af42 100644
--- a/dlls/msvcrt/cpp.c
+++ b/dlls/msvcrt/cpp.c
@@ -87,7 +87,7 @@ static void dump_obj_locator( const rtti_object_locator *ptr )
 static void dump_obj_locator( const rtti_object_locator *ptr )
 {
     int i;
-    char *base = ptr->signature == 0 ? (char*)GetModuleHandleW(NULL) : (char*)ptr - ptr->object_locator;
+    char *base = ptr->signature == 0 ? (char*)RtlPcToFileHeader((void*)ptr, (void**)&base) : (char*)ptr - ptr->object_locator;
     const rtti_object_hierarchy *h = (const rtti_object_hierarchy*)(base + ptr->type_hierarchy);
     const type_info *type_descriptor = (const type_info*)(base + ptr->type_descriptor);
 
@@ -887,7 +887,7 @@ const type_info* CDECL MSVCRT___RTtypeid(void *cppobj)
         char *base;
 
         if(obj_locator->signature == 0)
-            base = (char*)GetModuleHandleW(NULL);
+            base = (char*)RtlPcToFileHeader((void*)obj_locator, (void**)&base);
         else
             base = (char*)obj_locator - obj_locator->object_locator;
 
@@ -1015,7 +1015,7 @@ void* CDECL MSVCRT___RTDynamicCast(void *cppobj, int unknown,
         if (TRACE_ON(msvcrt)) dump_obj_locator(obj_locator);
 
         if(obj_locator->signature == 0)
-            base = (char*)GetModuleHandleW(NULL);
+            base = (char*)RtlPcToFileHeader((void*)obj_locator, (void**)&base);
         else
             base = (char*)obj_locator - obj_locator->object_locator;
 




More information about the wine-cvs mailing list