From f3abe0bd7f70ade54fc63a206327180878078308 Mon Sep 17 00:00:00 2001 From: Piotr Caban Date: Tue, 14 Jan 2014 13:54:52 +0100 Subject: [PATCH] msvcp110: Add locale::_Init implementation. --- dlls/msvcp110/msvcp110.spec | 4 ++-- dlls/msvcp90/locale.c | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/dlls/msvcp110/msvcp110.spec b/dlls/msvcp110/msvcp110.spec index 0fbb08eaf9c..a12b20e32b1 100644 --- a/dlls/msvcp110/msvcp110.spec +++ b/dlls/msvcp110/msvcp110.spec @@ -1467,8 +1467,8 @@ @ cdecl -arch=arm ?_Init@ios_base@std@@IAAXXZ(ptr) ios_base__Init @ thiscall -arch=i386 ?_Init@ios_base@std@@IAEXXZ(ptr) ios_base__Init @ cdecl -arch=win64 ?_Init@ios_base@std@@IEAAXXZ(ptr) ios_base__Init -@ stub -arch=win32 ?_Init@locale@std@@CAPAV_Locimp@12@_N@Z -@ stub -arch=win64 ?_Init@locale@std@@CAPEAV_Locimp@12@_N@Z +@ cdecl -arch=win32 ?_Init@locale@std@@CAPAV_Locimp@12@_N@Z(long) locale__Init_ref +@ cdecl -arch=win64 ?_Init@locale@std@@CAPEAV_Locimp@12@_N@Z(long) locale__Init_ref @ extern ?_Init_cnt@Init@ios_base@std@@0HA ios_base_Init__Init_cnt # extern ?_Init_cnt@_UShinit@std@@0HA @ extern ?_Init_cnt@_Winit@std@@0HA _Winit__Init_cnt diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c index c58862fdaaf..b35eaf53e73 100644 --- a/dlls/msvcp90/locale.c +++ b/dlls/msvcp90/locale.c @@ -9845,6 +9845,27 @@ locale__Locimp* __cdecl locale__Init(void) return global_locale; } +/* ?_Init@locale@std@@CAPAV_Locimp@12@_N@Z */ +/* ?_Init@locale@std@@CAPEAV_Locimp@12@_N@Z */ +locale__Locimp* __cdecl locale__Init_ref(MSVCP_bool inc_ref) +{ + locale__Locimp *ret; + _Lockit lock; + + TRACE("(%x)\n", inc_ref); + + _Lockit_ctor_locktype(&lock, _LOCK_LOCALE); + if(inc_ref && global_locale) { + call_locale_facet__Incref(&global_locale->facet); + _Lockit_dtor(&lock); + return global_locale; + } + + ret = locale__Init(); + _Lockit_dtor(&lock); + return ret; +} + /* ??0locale@std@@QAE@ABV01@0H@Z */ /* ??0locale@std@@QEAA@AEBV01@0H@Z */ DEFINE_THISCALL_WRAPPER(locale_ctor_locale_locale, 16)