[PATCH 2/2] msvcrt: Inline MSVCRT__towupper_l with an internal helper.

Rémi Bernon rbernon at codeweavers.com
Mon Nov 9 06:24:52 CST 2020


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/msvcrt/wcs.c | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index ffcc7d11926..6d0e43a722e 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -100,6 +100,21 @@ static inline int msvcrt_towlower_internal(MSVCRT_wint_t c, MSVCRT_pthreadlocinf
     return ret;
 }
 
+static inline int msvcrt_towupper_internal(MSVCRT_wint_t c, MSVCRT_pthreadlocinfo locinfo)
+{
+    MSVCRT_wchar_t ret;
+
+    if(!locinfo->lc_handle[MSVCRT_LC_CTYPE]) {
+        if(c >= 'a' && c <= 'z')
+            return c + 'A' - 'a';
+        return c;
+    }
+
+    if(!LCMapStringW(locinfo->lc_handle[MSVCRT_LC_CTYPE], LCMAP_UPPERCASE, &c, 1, &ret, 1))
+        return c;
+    return ret;
+}
+
 /*********************************************************************
  *              _towlower_l (MSVCRT.@)
  */
@@ -371,10 +386,15 @@ int CDECL MSVCRT__wcsupr_s_l( MSVCRT_wchar_t* str, MSVCRT_size_t n,
     return MSVCRT_EINVAL;
   }
 
+  if(!locale)
+      locinfo = get_locinfo();
+  else
+      locinfo = locale->locinfo;
+
   while (n--)
   {
     if (!*ptr) return 0;
-    *ptr = MSVCRT__towupper_l(*ptr, locale);
+    *ptr = msvcrt_towupper_internal(*ptr, locinfo);
     ptr++;
   }
 
@@ -2779,22 +2799,13 @@ MSVCRT_size_t CDECL MSVCRT_wcsnlen(const MSVCRT_wchar_t *s, MSVCRT_size_t maxlen
 int CDECL MSVCRT__towupper_l(MSVCRT_wint_t c, MSVCRT__locale_t locale)
 {
     MSVCRT_pthreadlocinfo locinfo;
-    MSVCRT_wchar_t ret;
 
     if(!locale)
         locinfo = get_locinfo();
     else
         locinfo = locale->locinfo;
 
-    if(!locinfo->lc_handle[MSVCRT_LC_CTYPE]) {
-        if(c >= 'a' && c <= 'z')
-            return c + 'A' - 'a';
-        return c;
-    }
-
-    if(!LCMapStringW(locinfo->lc_handle[MSVCRT_LC_CTYPE], LCMAP_UPPERCASE, &c, 1, &ret, 1))
-        return c;
-    return ret;
+    return msvcrt_towupper_internal(c, locinfo);
 }
 
 /*********************************************************************
-- 
2.29.2




More information about the wine-devel mailing list