Piotr Caban : msvcrt: locinfo->lc_name should be guarded by lc_category->wrefcount.

Alexandre Julliard julliard at winehq.org
Wed Nov 18 15:48:01 CST 2020


Module: wine
Branch: master
Commit: 84559266626938582b065cbb52e1b2a221116f02
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=84559266626938582b065cbb52e1b2a221116f02

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed Nov 18 17:25:47 2020 +0100

msvcrt: locinfo->lc_name should be guarded by lc_category->wrefcount.

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

---

 dlls/msvcrt/locale.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index ca50fc7e390..a305f88e808 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -407,6 +407,11 @@ static inline BOOL set_lc_locale_name(MSVCRT_pthreadlocinfo locinfo, int cat)
     WCHAR buf[100];
     int len;
 
+    locinfo->lc_category[cat].wrefcount = MSVCRT_malloc(sizeof(int));
+    if(!locinfo->lc_category[cat].wrefcount)
+        return FALSE;
+    *locinfo->lc_category[cat].wrefcount = 1;
+
     len = GetLocaleInfoW(lcid, LOCALE_SISO639LANGNAME
             |LOCALE_NOUSEROVERRIDE, buf, 100);
     if(!len) return FALSE;
@@ -931,6 +936,7 @@ void free_locinfo(MSVCRT_pthreadlocinfo locinfo)
     for(i=MSVCRT_LC_MIN+1; i<=MSVCRT_LC_MAX; i++) {
         MSVCRT_free(locinfo->lc_category[i].locale);
         MSVCRT_free(locinfo->lc_category[i].refcount);
+        MSVCRT_free(locinfo->lc_category[i].wrefcount);
 #if _MSVCR_VER >= 110
         MSVCRT_free(locinfo->lc_name[i]);
 #endif




More information about the wine-cvs mailing list