Piotr Caban : msvcp110: Don't allocate empty buffers in _Locinfo:: _Locinfo_ctor.

Alexandre Julliard julliard at wine.codeweavers.com
Sat May 14 10:07:27 CDT 2016


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue May 10 15:24:04 2016 +0200

msvcp110: Don't allocate empty buffers in _Locinfo::_Locinfo_ctor.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcp90/locale.c  | 13 ++++++-------
 dlls/msvcp90/msvcp90.h |  1 +
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/dlls/msvcp90/locale.c b/dlls/msvcp90/locale.c
index 24cacc7..0a06da2 100644
--- a/dlls/msvcp90/locale.c
+++ b/dlls/msvcp90/locale.c
@@ -69,6 +69,7 @@ LCID* __cdecl ___lc_handle_func(void);
 
 #if _MSVCP_VER < 100
 #define locale_string basic_string_char
+#define locale_string_char_ctor(this)           MSVCP_basic_string_char_ctor(this)
 #define locale_string_char_ctor_cstr(this,str)  MSVCP_basic_string_char_ctor_cstr(this,str)
 #define locale_string_char_copy_ctor(this,copy) MSVCP_basic_string_char_copy_ctor(this,copy)
 #define locale_string_char_dtor(this)           MSVCP_basic_string_char_dtor(this)
@@ -76,6 +77,7 @@ LCID* __cdecl ___lc_handle_func(void);
 #define locale_string_char_assign(this,assign)  MSVCP_basic_string_char_assign(this,assign)
 #else
 #define locale_string _Yarn_char
+#define locale_string_char_ctor(this)           _Yarn_char_ctor(this)
 #define locale_string_char_ctor_cstr(this,str)  _Yarn_char_ctor_cstr(this,str)
 #define locale_string_char_copy_ctor(this,copy) _Yarn_char_copy_ctor(this,copy)
 #define locale_string_char_dtor(this)           _Yarn_char_dtor(this)
@@ -512,9 +514,6 @@ void* __thiscall _Timevec__Getptr(_Timevec *this)
 _Locinfo* __cdecl _Locinfo__Locinfo_ctor_cat_cstr(_Locinfo *locinfo, int category, const char *locstr)
 {
     const char *locale = NULL;
-#if _MSVCP_VER >= 110
-    static const wchar_t empty[] = { '\0' };
-#endif
 
     /* This function is probably modifying more global objects */
     FIXME("(%p %d %s) semi-stub\n", locinfo, category, locstr);
@@ -523,11 +522,11 @@ _Locinfo* __cdecl _Locinfo__Locinfo_ctor_cat_cstr(_Locinfo *locinfo, int categor
         throw_exception(EXCEPTION_RUNTIME_ERROR, "bad locale name");
 
     _Lockit_ctor_locktype(&locinfo->lock, _LOCK_LOCALE);
-    locale_string_char_ctor_cstr(&locinfo->days, "");
-    locale_string_char_ctor_cstr(&locinfo->months, "");
+    locale_string_char_ctor(&locinfo->days);
+    locale_string_char_ctor(&locinfo->months);
 #if _MSVCP_VER >= 110
-    locale_string_wchar_ctor_cstr(&locinfo->wdays, empty);
-    locale_string_wchar_ctor_cstr(&locinfo->wmonths, empty);
+    locale_string_wchar_ctor(&locinfo->wdays);
+    locale_string_wchar_ctor(&locinfo->wmonths);
 #endif
     locale_string_char_ctor_cstr(&locinfo->oldlocname, setlocale(LC_ALL, NULL));
 
diff --git a/dlls/msvcp90/msvcp90.h b/dlls/msvcp90/msvcp90.h
index 2d0f4f8..4a42332 100644
--- a/dlls/msvcp90/msvcp90.h
+++ b/dlls/msvcp90/msvcp90.h
@@ -142,6 +142,7 @@ typedef struct
     char null_str;
 } _Yarn_char;
 
+_Yarn_char* __thiscall _Yarn_char_ctor(_Yarn_char*);
 _Yarn_char* __thiscall _Yarn_char_ctor_cstr(_Yarn_char*, const char*);
 _Yarn_char* __thiscall _Yarn_char_copy_ctor(_Yarn_char*, const _Yarn_char*);
 const char* __thiscall _Yarn_char_c_str(const _Yarn_char*);




More information about the wine-cvs mailing list