Piotr Caban : msvcrt: Fix C locale lc_time_curr refconting.

Alexandre Julliard julliard at winehq.org
Wed Nov 25 15:58:54 CST 2020


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed Nov 25 20:24:09 2020 +0100

msvcrt: Fix C locale lc_time_curr refconting.

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

---

 dlls/msvcrt/locale.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c
index 5971882229c..0c4211dc197 100644
--- a/dlls/msvcrt/locale.c
+++ b/dlls/msvcrt/locale.c
@@ -1099,8 +1099,8 @@ void free_locinfo(MSVCRT_pthreadlocinfo locinfo)
         MSVCRT_free((void*)locinfo->pcumap);
     }
 
-    if(locinfo->lc_time_curr && locinfo->lc_time_curr != &cloc_time_data
-            && !InterlockedDecrement(&locinfo->lc_time_curr->refcount))
+    if(locinfo->lc_time_curr && !InterlockedDecrement(&locinfo->lc_time_curr->refcount)
+            && locinfo->lc_time_curr != &cloc_time_data)
         MSVCRT_free(locinfo->lc_time_curr);
 
     if(InterlockedDecrement(&locinfo->refcount))
@@ -1932,8 +1932,7 @@ static MSVCRT_pthreadlocinfo create_locinfo(int category,
                 lcid[MSVCRT_LC_TIME], cp[MSVCRT_LC_TIME])) {
         copy_threadlocinfo_category(locinfo, old_locinfo, MSVCRT_LC_TIME);
         locinfo->lc_time_curr = old_locinfo->lc_time_curr;
-        if(locinfo->lc_time_curr != &cloc_time_data)
-            InterlockedIncrement(&locinfo->lc_time_curr->refcount);
+        InterlockedIncrement(&locinfo->lc_time_curr->refcount);
     } else if(lcid[MSVCRT_LC_TIME]) {
         if(!update_threadlocinfo_category(lcid[MSVCRT_LC_TIME],
                     cp[MSVCRT_LC_TIME], locinfo, MSVCRT_LC_TIME)) {
@@ -1952,6 +1951,7 @@ static MSVCRT_pthreadlocinfo create_locinfo(int category,
             return NULL;
         }
         locinfo->lc_time_curr = &cloc_time_data;
+        InterlockedIncrement(&locinfo->lc_time_curr->refcount);
     }
 
     return locinfo;




More information about the wine-cvs mailing list