Piotr Caban : msvcp90: Pass RTTI base pointer from DllMain.

Alexandre Julliard julliard at winehq.org
Fri Sep 7 13:26:20 CDT 2012


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Fri Sep  7 11:01:35 2012 +0200

msvcp90: Pass RTTI base pointer from DllMain.

---

 dlls/msvcp90/exception.c    |    3 +--
 dlls/msvcp90/ios.c          |    3 +--
 dlls/msvcp90/locale.c       |    3 +--
 dlls/msvcp90/msvcp90.h      |    6 +++---
 dlls/msvcp90/msvcp90_main.c |    6 +++---
 5 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/dlls/msvcp90/exception.c b/dlls/msvcp90/exception.c
index 7202a25..6aa3c0d 100644
--- a/dlls/msvcp90/exception.c
+++ b/dlls/msvcp90/exception.c
@@ -751,10 +751,9 @@ void throw_exception(exception_type et, const char *str)
     }
 }
 
-void init_exception(void)
+void init_exception(void *base)
 {
 #ifdef __x86_64__
-    void *base = GetModuleHandleA("msvcp90.dll");
     init_type_info_rtti(base);
     init_exception_rtti(base);
     init_bad_alloc_rtti(base);
diff --git a/dlls/msvcp90/ios.c b/dlls/msvcp90/ios.c
index e5d7233..164efcd 100644
--- a/dlls/msvcp90/ios.c
+++ b/dlls/msvcp90/ios.c
@@ -12921,10 +12921,9 @@ struct {
 /* ?_Ptr_wclog at std@@3PEAV?$basic_ostream at _WU?$char_traits at _W@std@@@1 at EA */
 basic_ostream_wchar *_Ptr_wclog = &wclog.obj;
 
-void init_io(void)
+void init_io(void *base)
 {
 #ifdef __x86_64__
-    void *base = GetModuleHandleA("msvcp90.dll");
     init_iosb_rtti(base);
     init_ios_base_rtti(base);
     init_basic_ios_char_rtti(base);
diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index f5a4534..ddf1424 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -8739,10 +8739,9 @@ void __asm_dummy_vtables(void) {
 }
 #endif
 
-void init_locale(void)
+void init_locale(void *base)
 {
 #ifdef __x86_64__
-    void *base = GetModuleHandleA("msvcp90.dll");
     init_locale_facet_rtti(base);
     init_collate_char_rtti(base);
     init_collate_wchar_rtti(base);
diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h
index 84e39c5..1108591 100644
--- a/dlls/msvcp90/msvcp90.h
+++ b/dlls/msvcp90/msvcp90.h
@@ -463,7 +463,7 @@ ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_uint64(const num_put*, o
 ostreambuf_iterator_wchar* __thiscall num_put_wchar_put_bool(const num_put*, ostreambuf_iterator_wchar*,
         ostreambuf_iterator_wchar, ios_base*, wchar_t, MSVCP_bool);
 
-void init_exception(void);
-void init_locale(void);
-void init_io(void);
+void init_exception(void*);
+void init_locale(void*);
+void init_io(void*);
 void free_io(void);
diff --git a/dlls/msvcp90/msvcp90_main.c b/dlls/msvcp90/msvcp90_main.c
index 8d97c9d..31a2d82 100644
--- a/dlls/msvcp90/msvcp90_main.c
+++ b/dlls/msvcp90/msvcp90_main.c
@@ -90,9 +90,9 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
         case DLL_PROCESS_ATTACH:
             init_cxx_funcs();
             init_lockit();
-            init_exception();
-            init_locale();
-            init_io();
+            init_exception(hinstDLL);
+            init_locale(hinstDLL);
+            init_io(hinstDLL);
             break;
         case DLL_PROCESS_DETACH:
             free_io();




More information about the wine-cvs mailing list