From d161abb9b37111088b8ab5d342f814af221e5934 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Fri, 7 Sep 2012 11:01:35 +0200 Subject: [PATCH] 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 7202a257d54..6aa3c0d6119 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 e5d723390c3..164efcd8317 100644 --- a/dlls/msvcp90/ios.c +++ b/dlls/msvcp90/ios.c @@ -12921,10 +12921,9 @@ struct { /* ?_Ptr_wclog@std@@3PEAV?$basic_ostream@_WU?$char_traits@_W@std@@@1@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 f5a45343499..ddf14248349 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 84e39c5d39c..1108591b8a0 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 8d97c9d72f7..31a2d82adfe 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(); -- 2.11.4.GIT