From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/mbcs.c | 27 +++++++++++++++++++++------ dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 4 ++-- 8 files changed, 29 insertions(+), 14 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index b051cf6a77f..3b053698f0c 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1100,7 +1100,7 @@ @ cdecl _mbscat_s(ptr long str) @ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) -@ stub _mbschr_l +@ cdecl _mbschr_l(str long ptr) @ cdecl _mbscmp(str str) @ cdecl _mbscmp_l(str str ptr) @ cdecl _mbscoll(str str) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 593df178536..c57eca5d678 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1457,7 +1457,7 @@ @ cdecl _mbscat_s(ptr long str) @ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) -@ stub _mbschr_l +@ cdecl _mbschr_l(str long ptr) @ cdecl _mbscmp(str str) @ cdecl _mbscmp_l(str str ptr) @ cdecl _mbscoll(str str) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index cd92da9a8d7..b4503c10d2b 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1468,7 +1468,7 @@ @ cdecl _mbscat_s(ptr long str) @ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) -@ stub _mbschr_l +@ cdecl _mbschr_l(str long ptr) @ cdecl _mbscmp(str str) @ cdecl _mbscmp_l(str str ptr) @ cdecl _mbscoll(str str) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index de0da8e26e9..bf63a33ed07 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -772,7 +772,7 @@ @ cdecl _mbscat_s(ptr long str) @ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) -@ stub _mbschr_l +@ cdecl _mbschr_l(str long ptr) @ cdecl _mbscmp(str str) @ cdecl _mbscmp_l(str str ptr) @ cdecl _mbscoll(str str) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index d5f94a65f78..377cbe7684b 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -750,7 +750,7 @@ @ cdecl _mbscat_s(ptr long str) @ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) -@ stub _mbschr_l +@ cdecl _mbschr_l(str long ptr) @ cdecl _mbscmp(str str) @ cdecl _mbscmp_l(str str ptr) @ cdecl _mbscoll(str str) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 41a46f40495..e5e80a26de1 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1344,18 +1344,25 @@ unsigned char * CDECL _mbsstr(const unsigned char *haystack, const unsigned char }
/********************************************************************* - * _mbschr(MSVCRT.@) - * - * Find a multibyte character in a multibyte string. + * _mbschr_l(MSVCRT.@) */ -unsigned char* CDECL _mbschr(const unsigned char* s, unsigned int x) +unsigned char* CDECL _mbschr_l(const unsigned char* s, unsigned int x, _locale_t locale) { - if(get_mbcinfo()->ismbcodepage) + pthreadmbcinfo mbcinfo; + + if(!MSVCRT_CHECK_PMT(s)) + return NULL; + + if(locale) + mbcinfo = locale->mbcinfo; + else + mbcinfo = get_mbcinfo(); + if(mbcinfo->ismbcodepage) { unsigned int c; while (1) { - c = _mbsnextc(s); + c = _mbsnextc_l(s, locale); if (c == x) return (unsigned char*)s; if (!c) @@ -1366,6 +1373,14 @@ unsigned char* CDECL _mbschr(const unsigned char* s, unsigned int x) return u_strchr(s, x); /* ASCII CP */ }
+/********************************************************************* + * _mbschr(MSVCRT.@) + */ +unsigned char* CDECL _mbschr(const unsigned char* s, unsigned int x) +{ + return _mbschr_l(s, x, NULL); +} + /********************************************************************* * _mbsrchr(MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index dab9ae87b5b..4c9363ddbf8 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -718,7 +718,7 @@ @ cdecl _mbscat_s(ptr long str) @ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) -# stub _mbschr_l(str long ptr) +@ cdecl _mbschr_l(str long ptr) @ cdecl _mbscmp(str str) @ cdecl _mbscmp_l(str str ptr) @ cdecl _mbscoll(str str) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 3e3fd8d6965..b84229efb1b 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -614,7 +614,7 @@ @ cdecl _mbscat_s(ptr long str) @ cdecl _mbscat_s_l(ptr long str ptr) @ cdecl _mbschr(str long) -@ stub _mbschr_l +@ cdecl _mbschr_l(str long ptr) @ cdecl _mbscmp(str str) @ cdecl _mbscmp_l(str str ptr) @ cdecl _mbscoll(str str) @@ -1184,7 +1184,7 @@ @ cdecl _o__mbscat_s(ptr long str) _mbscat_s @ cdecl _o__mbscat_s_l(ptr long str ptr) _mbscat_s_l @ cdecl _o__mbschr(str long) _mbschr -@ stub _o__mbschr_l +@ cdecl _o__mbschr_l(str long ptr) _mbschr_l @ cdecl _o__mbscmp(str str) _mbscmp @ cdecl _o__mbscmp_l(str str ptr) _mbscmp_l @ cdecl _o__mbscoll(str str) _mbscoll