From: Bartosz Kosiorek gang65@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++)
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 | 11 ++++++++++- dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 4 ++-- 8 files changed, 18 insertions(+), 9 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..715d8dacbba 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -2828,12 +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 ); + string += _mbsspn_l(string, set, NULL); return *string ? (unsigned char*)string : 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
Piotr Caban (@piotr) commented about dlls/msvcrt/mbcs.c:
_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 );
- string += _mbsspn_l(string, set, NULL); return *string ? (unsigned char*)string : NULL;
Please call `_mbsspnp_l` instead of duplicating the implementation.
Piotr Caban (@piotr) commented about dlls/msvcrt/mbcs.c:
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;
Please add parameter validation (similar as in _mbsspn_l function).