[PATCH v3 0/2] MR4402: msvcrt: Add implementation of more localized functions
-- v3: msvcrt: Add _mbsspnp_l implementation. msvcrt: Fix _mbsspn_l implementation. https://gitlab.winehq.org/wine/wine/-/merge_requests/4402
From: Bartosz Kosiorek <gang65(a)poczta.onet.pl> --- dlls/msvcrt/mbcs.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 9b52170d4e9..6328be7cd67 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -2791,6 +2791,9 @@ size_t CDECL _mbsspn_l(const unsigned char* string, { const unsigned char *p, *q; + if (!MSVCRT_CHECK_PMT(string && set)) + return 0; + for (p = string; *p; p++) { for (q = set; *q; q++) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4402
From: Bartosz Kosiorek <gang65(a)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 | 12 ++++++++++-- dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 4 ++-- 8 files changed, 18 insertions(+), 10 deletions(-) diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index f4baf442b53..79a201f4c17 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1186,7 +1186,7 @@ @ cdecl _mbsspn(str str) @ cdecl _mbsspn_l(str str ptr) @ cdecl _mbsspnp(str str) -@ stub _mbsspnp_l +@ cdecl _mbsspnp_l(str str ptr) @ cdecl _mbsstr(str str) @ stub _mbsstr_l @ cdecl _mbstok(str str) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index e9bdf422024..6a6d38db187 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1543,7 +1543,7 @@ @ cdecl _mbsspn(str str) @ cdecl _mbsspn_l(str str ptr) @ cdecl _mbsspnp(str str) -@ stub _mbsspnp_l +@ cdecl _mbsspnp_l(str str ptr) @ cdecl _mbsstr(str str) @ stub _mbsstr_l @ cdecl _mbstok(str str) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 13dacc15744..13d7e401133 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1554,7 +1554,7 @@ @ cdecl _mbsspn(str str) @ cdecl _mbsspn_l(str str ptr) @ cdecl _mbsspnp(str str) -@ stub _mbsspnp_l +@ cdecl _mbsspnp_l(str str ptr) @ cdecl _mbsstr(str str) @ stub _mbsstr_l @ cdecl _mbstok(str str) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 91781c9c9e4..5b253b88234 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -858,7 +858,7 @@ @ cdecl _mbsspn(str str) @ cdecl _mbsspn_l(str str ptr) @ cdecl _mbsspnp(str str) -@ stub _mbsspnp_l +@ cdecl _mbsspnp_l(str str ptr) @ cdecl _mbsstr(str str) @ stub _mbsstr_l @ cdecl _mbstok(str str) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 2af41f8aea2..df989581d5e 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -836,7 +836,7 @@ @ cdecl _mbsspn(str str) @ cdecl _mbsspn_l(str str ptr) @ cdecl _mbsspnp(str str) -@ stub _mbsspnp_l +@ cdecl _mbsspnp_l(str str ptr) @ cdecl _mbsstr(str str) @ stub _mbsstr_l @ cdecl _mbstok(str str) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 6328be7cd67..d999d997a6c 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -2828,13 +2828,21 @@ size_t CDECL _mbsspn(const unsigned char* string, const unsigned char* set) return _mbsspn_l(string, set, NULL); } +/********************************************************************* + * _mbsspnp_l (MSVCRT.@) + */ +unsigned char* CDECL _mbsspnp_l(const unsigned char* string, const unsigned char* set, _locale_t locale) +{ + string += _mbsspn_l(string, set, locale); + return *string ? (unsigned char*)string : NULL; +} + /********************************************************************* * _mbsspnp (MSVCRT.@) */ unsigned char* CDECL _mbsspnp(const unsigned char* string, const unsigned char* set) { - string += _mbsspn( string, set ); - return *string ? (unsigned char*)string : NULL; + return _mbsspnp_l(string, set, NULL); } /********************************************************************* diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index f54a437692f..72392a1847b 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -807,7 +807,7 @@ @ cdecl _mbsspn(str str) @ cdecl _mbsspn_l(str str ptr) @ cdecl _mbsspnp(str str) -# stub _mbsspnp_l(str str ptr) +@ cdecl _mbsspnp_l(str str ptr) @ cdecl _mbsstr(str str) # stub _mbsstr_l(str str ptr) @ cdecl _mbstok(str str) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 7cf9b01aa4f..60ebe06ea82 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -702,7 +702,7 @@ @ cdecl _mbsspn(str str) @ cdecl _mbsspn_l(str str ptr) @ cdecl _mbsspnp(str str) -@ stub _mbsspnp_l +@ cdecl _mbsspnp_l(str str ptr) @ cdecl _mbsstr(str str) @ stub _mbsstr_l @ cdecl _mbstok(str str) @@ -1271,7 +1271,7 @@ @ cdecl _o__mbsspn(str str) _mbsspn @ cdecl _o__mbsspn_l(str str ptr) _mbsspn_l @ cdecl _o__mbsspnp(str str) _mbsspnp -@ stub _o__mbsspnp_l +@ cdecl _o__mbsspnp_l(str str ptr) _mbsspnp_l @ cdecl _o__mbsstr(str str) _mbsstr @ stub _o__mbsstr_l @ cdecl _o__mbstok(str str) _mbstok -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4402
On Thu Nov 16 18:57:49 2023 +0000, Piotr Caban wrote:
Please add parameter validation (similar as in _mbsspn_l function). It's still not fixed.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/4402#note_52579
participants (3)
-
Bartosz Kosiorek -
Bartosz Kosiorek (@gang65) -
Piotr Caban (@piotr)