Piotr Caban : msvcrt: Don't use strncmpiW in _wcsnicmp_l.

Alexandre Julliard julliard at winehq.org
Tue Jul 14 16:23:39 CDT 2020


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Jul 14 20:23:26 2020 +0200

msvcrt: Don't use strncmpiW in _wcsnicmp_l.

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

---

 dlls/msvcrt/wcs.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index cb355a0d13..59ff24e196 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -141,15 +141,29 @@ INT CDECL MSVCRT__wcsicmp( const MSVCRT_wchar_t* str1, const MSVCRT_wchar_t* str
 /*********************************************************************
  *              _wcsnicmp_l (MSVCRT.@)
  */
-INT CDECL MSVCRT__wcsnicmp_l(const MSVCRT_wchar_t *str1, const MSVCRT_wchar_t *str2, INT n, MSVCRT__locale_t locale)
+INT CDECL MSVCRT__wcsnicmp_l(const MSVCRT_wchar_t *str1, const MSVCRT_wchar_t *str2,
+        MSVCRT_size_t n, MSVCRT__locale_t locale)
 {
-    return strncmpiW(str1, str2, n);
+    MSVCRT_wchar_t c1, c2;
+
+    if (!n)
+            return 0;
+
+    if(!MSVCRT_CHECK_PMT(str1 != NULL) || !MSVCRT_CHECK_PMT(str2 != NULL))
+        return MSVCRT__NLSCMPERROR;
+
+    do
+    {
+        c1 = MSVCRT__towlower_l(*str1++, locale);
+        c2 = MSVCRT__towlower_l(*str2++, locale);
+    } while(--n && c1 && (c1 == c2));
+    return c1 - c2;
 }
 
 /*********************************************************************
  *              _wcsnicmp (MSVCRT.@)
  */
-INT CDECL MSVCRT__wcsnicmp(const MSVCRT_wchar_t *str1, const MSVCRT_wchar_t *str2, INT n)
+INT CDECL MSVCRT__wcsnicmp(const MSVCRT_wchar_t *str1, const MSVCRT_wchar_t *str2, MSVCRT_size_t n)
 {
     return MSVCRT__wcsnicmp_l(str1, str2, n, NULL);
 }




More information about the wine-cvs mailing list