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/msvcrt/msvcrt.spec | 2 +- dlls/ucrtbase/ucrtbase.spec | 4 ++-- 8 files changed, 26 insertions(+), 12 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index f33973f856d..9659cd1f3a2 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1124,7 +1124,7 @@ @ cdecl _mbslwr_s(str long) @ cdecl _mbslwr_s_l(str long ptr) @ cdecl _mbsnbcat(str str long) -@ stub _mbsnbcat_l +@ cdecl _mbsnbcat_l(str str long ptr) @ cdecl _mbsnbcat_s(str long ptr long) @ stub _mbsnbcat_s_l @ cdecl _mbsnbcmp(str str long) diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 418387e1d29..4bab0eddc99 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1481,7 +1481,7 @@ @ cdecl _mbslwr_s(str long) @ cdecl _mbslwr_s_l(str long ptr) @ cdecl _mbsnbcat(str str long) -@ stub _mbsnbcat_l +@ cdecl _mbsnbcat_l(str str long ptr) @ cdecl _mbsnbcat_s(str long ptr long) @ stub _mbsnbcat_s_l @ cdecl _mbsnbcmp(str str long) diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 786f4b18caf..e0d87f7f7f1 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -1492,7 +1492,7 @@ @ cdecl _mbslwr_s(str long) @ cdecl _mbslwr_s_l(str long ptr) @ cdecl _mbsnbcat(str str long) -@ stub _mbsnbcat_l +@ cdecl _mbsnbcat_l(str str long ptr) @ cdecl _mbsnbcat_s(str long ptr long) @ stub _mbsnbcat_s_l @ cdecl _mbsnbcmp(str str long) diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index cbd720580ac..5cc72177a33 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -796,7 +796,7 @@ @ cdecl _mbslwr_s(str long) @ cdecl _mbslwr_s_l(str long ptr) @ cdecl _mbsnbcat(str str long) -@ stub _mbsnbcat_l +@ cdecl _mbsnbcat_l(str str long ptr) @ cdecl _mbsnbcat_s(str long ptr long) @ stub _mbsnbcat_s_l @ cdecl _mbsnbcmp(str str long) diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index 6bdbe9ee0e9..556ba1fa1a7 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -774,7 +774,7 @@ @ cdecl _mbslwr_s(str long) @ cdecl _mbslwr_s_l(str long ptr) @ cdecl _mbsnbcat(str str long) -@ stub _mbsnbcat_l +@ cdecl _mbsnbcat_l(str str long ptr) @ cdecl _mbsnbcat_s(str long ptr long) @ stub _mbsnbcat_s_l @ cdecl _mbsnbcmp(str str long) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 3d24ca63d50..eccd4a0dffb 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -2186,15 +2186,21 @@ size_t CDECL _mbsnbcnt(const unsigned char* str, size_t len) }
/********************************************************************* - * _mbsnbcat(MSVCRT.@) + * _mbsnbcat_l(MSVCRT.@) */ -unsigned char* CDECL _mbsnbcat(unsigned char* dst, const unsigned char* src, size_t len) +unsigned char* CDECL _mbsnbcat_l(unsigned char* dst, const unsigned char* src, size_t len, _locale_t locale) { - if(get_mbcinfo()->ismbcodepage) + pthreadmbcinfo mbcinfo; + + if(locale) + mbcinfo = locale->mbcinfo; + else + mbcinfo = get_mbcinfo(); + if(mbcinfo->ismbcodepage) { unsigned char *res = dst; while (*dst) { - if (_ismbblead(*dst++)) { + if (_ismbblead_l(*dst++, locale)) { if (*dst) { dst++; } else { @@ -2211,6 +2217,14 @@ unsigned char* CDECL _mbsnbcat(unsigned char* dst, const unsigned char* src, siz return u_strncat(dst, src, len); /* ASCII CP */ }
+/********************************************************************* + * _mbsnbcat(MSVCRT.@) + */ +unsigned char* CDECL _mbsnbcat(unsigned char* dst, const unsigned char* src, size_t len) +{ + return _mbsnbcat_l(dst, src, len); +} + int CDECL _mbsnbcat_s(unsigned char *dst, size_t size, const unsigned char *src, size_t len) { unsigned char *ptr = dst; diff --git a/dlls/msvcrt/msvcrt.spec b/dlls/msvcrt/msvcrt.spec index a77ed171fb1..e5e938959b8 100644 --- a/dlls/msvcrt/msvcrt.spec +++ b/dlls/msvcrt/msvcrt.spec @@ -745,7 +745,7 @@ @ cdecl _mbslwr_s(str long) @ cdecl _mbslwr_s_l(str long ptr) @ cdecl _mbsnbcat(str str long) -# stub _mbsnbcat_l(str str long ptr) +@ cdecl _mbsnbcat_l(str str long ptr) @ cdecl _mbsnbcat_s(str long ptr long) # stub _mbsnbcat_s_l(str long ptr long ptr) @ cdecl _mbsnbcmp(str str long) diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec index 188016bcde1..8aa80740587 100644 --- a/dlls/ucrtbase/ucrtbase.spec +++ b/dlls/ucrtbase/ucrtbase.spec @@ -640,7 +640,7 @@ @ cdecl _mbslwr_s(str long) @ cdecl _mbslwr_s_l(str long ptr) @ cdecl _mbsnbcat(str str long) -@ stub _mbsnbcat_l +@ cdecl _mbsnbcat_l(str str long ptr) @ cdecl _mbsnbcat_s(str long ptr long) @ stub _mbsnbcat_s_l @ cdecl _mbsnbcmp(str str long) @@ -1209,7 +1209,7 @@ @ cdecl _o__mbslwr_s(str long) _mbslwr_s @ cdecl _o__mbslwr_s_l(str long ptr) _mbslwr_s_l @ cdecl _o__mbsnbcat(str str long) _mbsnbcat -@ stub _o__mbsnbcat_l +@ cdecl _o__mbsnbcat_l(str str long ptr) _mbsnbcat_l @ cdecl _o__mbsnbcat_s(str long ptr long) _mbsnbcat_s @ stub _o__mbsnbcat_s_l @ cdecl _o__mbsnbcmp(str str long) _mbsnbcmp