Module: wine Branch: master Commit: fb071ba01f96385ae50851d8ba172ba5e52917ef URL: https://source.winehq.org/git/wine.git/?a=commit;h=fb071ba01f96385ae50851d8b...
Author: Piotr Caban piotr@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@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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); }