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 | 22 ++++++++++++++++++---- dlls/ucrtbase/ucrtbase.spec | 2 +- 7 files changed, 24 insertions(+), 10 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..9e8b0aaf198 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1344,18 +1344,21 @@ unsigned char * CDECL _mbsstr(const unsigned char *haystack, const unsigned char }
/********************************************************************* - * _mbschr(MSVCRT.@) + * _mbschr_l(MSVCRT.@) * - * Find a multibyte character in a multibyte string. + * Find a multibyte character in a multibyte string, + * by using the specified locale */ -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 (!MSVCRT_CHECK_PMT(s)) + return NULL; if(get_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 +1369,17 @@ unsigned char* CDECL _mbschr(const unsigned char* s, unsigned int x) return u_strchr(s, x); /* ASCII CP */ }
+/********************************************************************* + * _mbschr(MSVCRT.@) + * + * Find a multibyte character in a multibyte string, + * by using the current locale + */ +unsigned char* CDECL _mbschr(const unsigned char* s, unsigned int x) +{ + return _mbschr_l(s, x, NULL); +} + /********************************************************************* * _mbsrchr(MSVCRT.@) */ diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 3e3fd8d6965..b889fd627c4 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)
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 | 26 +++++++++++++++++++++----- dlls/ucrtbase/ucrtbase.spec | 2 +- 7 files changed, 27 insertions(+), 11 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 3b053698f0c..6b0865b5ad7 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1112,7 +1112,7 @@ @ cdecl _mbsdec(ptr ptr) @ stub _mbsdec_l @ cdecl _mbsicmp(str str) -@ stub _mbsicmp_l +@ cdecl _mbsicmp_l(str str ptr) @ cdecl _mbsicoll(str str) @ cdecl _mbsicoll_l(str str ptr) @ cdecl _mbsinc(str) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index c57eca5d678..35256da6664 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1469,7 +1469,7 @@ @ cdecl _mbsdec(ptr ptr) @ stub _mbsdec_l @ cdecl _mbsicmp(str str) -@ stub _mbsicmp_l +@ cdecl _mbsicmp_l(str str ptr) @ cdecl _mbsicoll(str str) @ cdecl _mbsicoll_l(str str ptr) @ cdecl _mbsinc(str) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index b4503c10d2b..bf924f8d2b0 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1480,7 +1480,7 @@ @ cdecl _mbsdec(ptr ptr) @ stub _mbsdec_l @ cdecl _mbsicmp(str str) -@ stub _mbsicmp_l +@ cdecl _mbsicmp_l(str str ptr) @ cdecl _mbsicoll(str str) @ cdecl _mbsicoll_l(str str ptr) @ cdecl _mbsinc(str) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index bf63a33ed07..d1d2f8e32f0 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -784,7 +784,7 @@ @ cdecl _mbsdec(ptr ptr) @ stub _mbsdec_l @ cdecl _mbsicmp(str str) -@ stub _mbsicmp_l +@ cdecl _mbsicmp_l(str str ptr) @ cdecl _mbsicoll(str str) @ cdecl _mbsicoll_l(str str ptr) @ cdecl _mbsinc(str) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 377cbe7684b..ef5124a66c9 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -762,7 +762,7 @@ @ cdecl _mbsdec(ptr ptr) @ stub _mbsdec_l @ cdecl _mbsicmp(str str) -@ stub _mbsicmp_l +@ cdecl _mbsicmp_l(str str ptr) @ cdecl _mbsicoll(str str) @ cdecl _mbsicoll_l(str str ptr) @ cdecl _mbsinc(str) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 9e8b0aaf198..0639a5e3b2e 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1098,11 +1098,19 @@ int CDECL _mbscoll(const unsigned char* str, const unsigned char* cmp) }
/********************************************************************* - * _mbsicmp(MSVCRT.@) + * _mbsicmp_l(MSVCRT.@) */ -int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp) +int CDECL _mbsicmp_l(const unsigned char* str, const unsigned char* cmp, _locale_t locale) { - if(get_mbcinfo()->ismbcodepage) + if (!MSVCRT_CHECK_PMT(str && cmp)) + return _NLSCMPERROR; + pthreadmbcinfo mbcinfo; + + if(!locale) + mbcinfo = get_mbcinfo(); + else + mbcinfo = locale->mbcinfo; + if(mbcinfo) { unsigned int strc, cmpc; do { @@ -1110,8 +1118,8 @@ int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp) return *cmp ? -1 : 0; if(!*cmp) return 1; - strc = _mbctolower(_mbsnextc(str)); - cmpc = _mbctolower(_mbsnextc(cmp)); + strc = _mbctolower_l(_mbsnextc_l(str, locale), locale); + cmpc = _mbctolower_l(_mbsnextc_l(cmp, locale), locale); if(strc != cmpc) return strc < cmpc ? -1 : 1; str +=(strc > 255) ? 2 : 1; @@ -1121,6 +1129,14 @@ int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp) return u_strcasecmp(str, cmp); /* ASCII CP */ }
+/********************************************************************* + * _mbsicmp(MSVCRT.@) + */ +int CDECL _mbsicmp(const unsigned char* str, const unsigned char* cmp) +{ + return _mbsicmp_l(str, cmp, NULL); +} + /********************************************************************* * _mbsncmp(MSVCRT.@) */ diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index b889fd627c4..b41b5c6c973 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -627,7 +627,7 @@ @ stub _mbsdec_l @ cdecl _mbsdup(str) _strdup @ cdecl _mbsicmp(str str) -@ stub _mbsicmp_l +@ cdecl _mbsicmp_l(str str ptr) @ cdecl _mbsicoll(str str) @ cdecl _mbsicoll_l(str str ptr) @ cdecl _mbsinc(str)
From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/msvcrt/mbcs.c | 3 ++- dlls/msvcrt/msvcrt.spec | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 7915c605cc4..a69b79e7d2c 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -982,7 +982,8 @@ int CDECL _mbscmp_l(const unsigned char* str, const unsigned char* cmp, _locale_ { pthreadmbcinfo mbcinfo;
- if (!str || !cmp) return INT_MAX; + if (!MSVCRT_CHECK_PMT(str && cmp)) + return _NLSCMPERROR;
mbcinfo = locale ? locale->mbcinfo : get_mbcinfo();
diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index dab9ae87b5b..c74decb997d 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -733,7 +733,7 @@ @ cdecl _mbsdup(str) _strdup # stub _strdup_dbg(str long str long) @ cdecl _mbsicmp(str str) -# stub _mbsicmp_l(str str ptr) +@ cdecl _mbsicmp_l(str str ptr) @ cdecl _mbsicoll(str str) @ cdecl _mbsicoll_l(str str ptr) @ cdecl _mbsinc(str)
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 | 10 +++++++++- dlls/ucrtbase/ucrtbase.spec | 2 +- 7 files changed, 15 insertions(+), 7 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 6b0865b5ad7..d4fa4e38b7b 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1082,7 +1082,7 @@ @ cdecl _mbcjmstojis(long) @ stub _mbcjmstojis_l @ cdecl _mbclen(ptr) -@ stub _mbclen_l +@ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) @ stub _mbctohira_l @ cdecl _mbctokata(long) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 35256da6664..a27a4487608 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1439,7 +1439,7 @@ @ cdecl _mbcjmstojis(long) @ stub _mbcjmstojis_l @ cdecl _mbclen(ptr) -@ stub _mbclen_l +@ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) @ stub _mbctohira_l @ cdecl _mbctokata(long) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index bf924f8d2b0..cb673976e61 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1450,7 +1450,7 @@ @ cdecl _mbcjmstojis(long) @ stub _mbcjmstojis_l @ cdecl _mbclen(ptr) -@ stub _mbclen_l +@ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) @ stub _mbctohira_l @ cdecl _mbctokata(long) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index d1d2f8e32f0..ca32dac7285 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -754,7 +754,7 @@ @ cdecl _mbcjmstojis(long) @ stub _mbcjmstojis_l @ cdecl _mbclen(ptr) -@ stub _mbclen_l +@ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) @ stub _mbctohira_l @ cdecl _mbctokata(long) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index ef5124a66c9..ce0ddfb6168 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -732,7 +732,7 @@ @ cdecl _mbcjmstojis(long) @ stub _mbcjmstojis_l @ cdecl _mbclen(ptr) -@ stub _mbclen_l +@ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) @ stub _mbctohira_l @ cdecl _mbctokata(long) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 0639a5e3b2e..7915c605cc4 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -643,12 +643,20 @@ unsigned char* CDECL _mbsdec(const unsigned char* start, const unsigned char* cu return (unsigned char *)cur - 1; /* ASCII CP or SB char */ }
+/********************************************************************* + * _mbclen_l(MSVCRT.@) + */ +size_t CDECL _mbclen_l(const unsigned char* str, _locale_t locale) +{ + return _ismbblead_l(*str, locale) ? 2 : 1; +} + /********************************************************************* * _mbclen(MSVCRT.@) */ size_t CDECL _mbclen(const unsigned char* str) { - return _ismbblead(*str) ? 2 : 1; + return _mbclen_l(str, NULL); }
/********************************************************************* diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index b41b5c6c973..78e4caf1479 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -597,7 +597,7 @@ @ cdecl _mbcjmstojis(long) @ stub _mbcjmstojis_l @ cdecl _mbclen(ptr) -@ stub _mbclen_l +@ cdecl _mbclen_l(ptr ptr) @ cdecl _mbctohira(long) @ stub _mbctohira_l @ cdecl _mbctokata(long)
From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/mbcs.c | 17 ++++++++++++++--- dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 2 +- 7 files changed, 20 insertions(+), 9 deletions(-)
diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index a27a4487608..38ba278af40 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1355,7 +1355,7 @@ @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) -@ stub _ismbstrail_l +@ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @ cdecl -arch=x86_64 _isnanf(float) @ cdecl _isprint_l(long ptr) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index cb673976e61..7cf69829d3c 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1361,7 +1361,7 @@ @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) -@ stub _ismbstrail_l +@ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @ cdecl -arch=x86_64 _isnanf(float) @ cdecl _isprint_l(long ptr) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index ca32dac7285..c6803e74b39 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -681,7 +681,7 @@ @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) -@ stub _ismbstrail_l +@ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @ cdecl -arch=x86_64 _isnanf(float) @ cdecl _isprint_l(long ptr) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index ce0ddfb6168..cea6e28b8f3 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -659,7 +659,7 @@ @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) -@ stub _ismbstrail_l +@ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @ cdecl -arch=x86_64 _isnanf(float) @ cdecl _isprint_l(long ptr) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index a69b79e7d2c..552d7d992b4 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1829,17 +1829,28 @@ int CDECL _ismbslead(const unsigned char* start, const unsigned char* str) }
/********************************************************************* - * _ismbstrail(MSVCRT.@) + * _ismbstrail_l(MSVCRT.@) */ -int CDECL _ismbstrail(const unsigned char* start, const unsigned char* str) +int CDECL _ismbstrail_l(const unsigned char* start, const unsigned char* str, _locale_t locale) { + if (!MSVCRT_CHECK_PMT(start && str)) + return NULL; + /* Note: this function doesn't check _ismbbtrail */ - if ((str > start) && _ismbslead(start, str-1)) + if ((str > start) && _ismbslead_l(start, str-1, locale)) return -1; else return 0; }
+/********************************************************************* + * _ismbstrail(MSVCRT.@) + */ +int CDECL _ismbstrail(const unsigned char* start, const unsigned char* str) +{ + return _ismbstrail_l(start, str, NULL); +} + /********************************************************************* * _mbbtype_l(MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index c74decb997d..517c892592b 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -630,7 +630,7 @@ @ cdecl _ismbslead(ptr ptr) # stub _ismbslead_l(long ptr) @ cdecl _ismbstrail(ptr ptr) -# stub _ismbstrail_l(long ptr) +@ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @ cdecl -arch=x86_64 _isnanf(float) @ cdecl _isprint_l(long ptr) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 78e4caf1479..f4ee96403cc 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -501,7 +501,7 @@ @ cdecl _ismbslead(ptr ptr) @ stub _ismbslead_l @ cdecl _ismbstrail(ptr ptr) -@ stub _ismbstrail_l +@ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @ cdecl -arch=x86_64 _isnanf(float) @ cdecl _isprint_l(long ptr)
From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/msvcr100/msvcr100.spec | 4 ++-- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr120/msvcr120.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/mbcs.c | 17 ++++++++++++++--- dlls/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 4 ++-- 8 files changed, 23 insertions(+), 12 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index d4fa4e38b7b..54f988ee9cd 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1007,9 +1007,9 @@ @ cdecl _ismbcupper(long) @ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) -@ stub _ismbslead_l +@ cdecl _ismbslead_l(ptr ptr ptr) @ cdecl _ismbstrail(ptr ptr) -@ stub _ismbstrail_l +@ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @ cdecl -arch=x86_64 _isnanf(float) @ cdecl _isprint_l(long ptr) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 38ba278af40..d84a88ea50b 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1353,7 +1353,7 @@ @ cdecl _ismbcupper(long) @ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) -@ stub _ismbslead_l +@ cdecl _ismbslead_l(ptr ptr ptr) @ cdecl _ismbstrail(ptr ptr) @ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 7cf69829d3c..5c65b082309 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1359,7 +1359,7 @@ @ cdecl _ismbcupper(long) @ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) -@ stub _ismbslead_l +@ cdecl _ismbslead_l(ptr ptr ptr) @ cdecl _ismbstrail(ptr ptr) @ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index c6803e74b39..4f3425acc35 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -679,7 +679,7 @@ @ cdecl _ismbcupper(long) @ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) -@ stub _ismbslead_l +@ cdecl _ismbslead_l(ptr ptr ptr) @ cdecl _ismbstrail(ptr ptr) @ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index cea6e28b8f3..4e26468b489 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -657,7 +657,7 @@ @ cdecl _ismbcupper(long) @ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) -@ stub _ismbslead_l +@ cdecl _ismbslead_l(ptr ptr ptr) @ cdecl _ismbstrail(ptr ptr) @ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 552d7d992b4..627babc86b6 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1806,10 +1806,13 @@ int CDECL _ismbclegal(unsigned int c) }
/********************************************************************* - * _ismbslead(MSVCRT.@) + * _ismbslead_l(MSVCRT.@) */ -int CDECL _ismbslead(const unsigned char* start, const unsigned char* str) +int CDECL _ismbslead_l(const unsigned char* start, const unsigned char* str, _locale_t locale) { + if (!MSVCRT_CHECK_PMT(start && str)) + return NULL; + int lead = 0;
if(!get_mbcinfo()->ismbcodepage) @@ -1821,13 +1824,21 @@ int CDECL _ismbslead(const unsigned char* start, const unsigned char* str) { if (!*start) return 0; - lead = !lead && _ismbblead(*start); + lead = !lead && _ismbblead_l(*start, locale); start++; }
return lead ? -1 : 0; }
+/********************************************************************* + * _ismbslead(MSVCRT.@) + */ +int CDECL _ismbslead(const unsigned char* start, const unsigned char* str) +{ + return _ismbslead_l(start, str, NULL); +} + /********************************************************************* * _ismbstrail_l(MSVCRT.@) */ diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index 517c892592b..0fc86ea82ff 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -628,7 +628,7 @@ @ cdecl _ismbcupper(long) @ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) -# stub _ismbslead_l(long ptr) +@ cdecl _ismbslead_l(ptr ptr ptr) @ cdecl _ismbstrail(ptr ptr) @ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index f4ee96403cc..66ced1a62b2 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -499,7 +499,7 @@ @ cdecl _ismbcupper(long) @ cdecl _ismbcupper_l(long ptr) @ cdecl _ismbslead(ptr ptr) -@ stub _ismbslead_l +@ cdecl _ismbslead_l(ptr ptr ptr) @ cdecl _ismbstrail(ptr ptr) @ cdecl _ismbstrail_l(ptr ptr ptr) @ cdecl _isnan(double) @@ -1098,7 +1098,7 @@ @ cdecl _o__ismbcupper(long) _ismbcupper @ cdecl _o__ismbcupper_l(long ptr) _ismbcupper_l @ cdecl _o__ismbslead(ptr ptr) _ismbslead -@ stub _o__ismbslead_l +@ cdecl _o__ismbslead_l(ptr ptr) _ismbslead_l @ cdecl _o__ismbstrail(ptr ptr) _ismbstrail @ stub _o__ismbstrail_l @ cdecl _o__iswctype_l(long long ptr) _iswctype_l
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=125193
Your paranoid android.
=== debian11 (build log) ===
Use of uninitialized value $Flaky in addition (+) at /home/testbot/lib/WineTestBot/LogUtils.pm line 720, <$LogFile> line 24731. Use of uninitialized value $Flaky in addition (+) at /home/testbot/lib/WineTestBot/LogUtils.pm line 720, <$LogFile> line 24731. Use of uninitialized value $Flaky in addition (+) at /home/testbot/lib/WineTestBot/LogUtils.pm line 720, <$LogFile> line 24731.