From 263a1448f96816120011b5a5855929e24b7a4818 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Thu, 26 Dec 2013 23:43:03 +0100 Subject: [PATCH] msvcp: Don't assume that msvcrt is imported. --- dlls/msvcp90/locale.c | 5 ++++- dlls/msvcp90/msvcp_main.c | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index 9b84b63f9d0..f9d8e1b3eae 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -1410,8 +1410,11 @@ void __thiscall ctype_char__Tidy(ctype_char *this) /* ?classic_table@?$ctype@D@std@@KAPEBFXZ */ const short* __cdecl ctype_char_classic_table(void) { + ctype_char *ctype; + TRACE("()\n"); - return &((short*)GetProcAddress(GetModuleHandleA("msvcrt.dll"), "_ctype"))[1]; + ctype = ctype_char_use_facet( locale_classic() ); + return ctype->ctype.table; } /* ??0?$ctype@D@std@@QAE@ABV_Locinfo@1@I@Z */ diff --git a/dlls/msvcp90/msvcp_main.c b/dlls/msvcp90/msvcp_main.c index 848d5bb6328..489aacb45ba 100644 --- a/dlls/msvcp90/msvcp_main.c +++ b/dlls/msvcp90/msvcp_main.c @@ -60,9 +60,14 @@ void* (__cdecl *MSVCRT_operator_new)(MSVCP_size_t); void (__cdecl *MSVCRT_operator_delete)(void*); void* (__cdecl *MSVCRT_set_new_handler)(void*); +#define VERSION_STRING(ver) #ver +#define MSVCRT_NAME(ver) "msvcr" VERSION_STRING(ver) ".dll" + static void init_cxx_funcs(void) { - HMODULE hmod = GetModuleHandleA("msvcrt.dll"); + HMODULE hmod = GetModuleHandleA( MSVCRT_NAME(_MSVCP_VER) ); + + if (!hmod) FIXME( "%s not loaded\n", MSVCRT_NAME(_MSVCP_VER) ); if (sizeof(void *) > sizeof(int)) /* 64-bit has different names */ {