From: Piotr Caban Subject: [PATCH 1/2] msvcrt: Added space for nullbyte in size returned by wcstombs_s and mbstowcs_s Message-Id: <4D9333E0.6030606@codeweavers.com> Date: Wed, 30 Mar 2011 15:45:04 +0200 --- dlls/msvcrt/mbcs.c | 2 +- dlls/msvcrt/tests/string.c | 8 ++++++++ dlls/msvcrt/wcs.c | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index 2a2ac72..caadc32 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1900,7 +1900,7 @@ int CDECL MSVCRT__mbstowcs_s_l(MSVCRT_size_t *ret, MSVCRT_wchar_t *wcstr, if(!wcstr && !size) { conv = MSVCRT__mbstowcs_l(NULL, mbstr, 0, locale); if(ret) - *ret = conv; + *ret = conv+1; return 0; } diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c index f3d8dc4..6aba883 100644 --- a/dlls/msvcrt/tests/string.c +++ b/dlls/msvcrt/tests/string.c @@ -1337,6 +1337,10 @@ static void test_mbstowcs(void) ok(ret == 3, "ret = %d\n", (int)ret); ok(!memcmp(wOut, wHiragana, sizeof(wHiragana)), "wOut = %s\n", wine_dbgstr_w(wOut)); + err = pmbstowcs_s(&ret, NULL, 0, mHiragana, 1); + ok(err == 0, "err = %d\n", err); + ok(ret == 3, "ret = %d\n", (int)ret); + err = pwcstombs_s(&ret, mOut, 6, wSimple, _TRUNCATE); ok(err == 0, "err = %d\n", err); ok(ret == 5, "ret = %d\n", (int)ret); @@ -1346,6 +1350,10 @@ static void test_mbstowcs(void) ok(err == 0, "err = %d\n", err); ok(ret == 5, "ret = %d\n", (int)ret); ok(!memcmp(mOut, mHiragana, sizeof(mHiragana)), "mOut = %s\n", mOut); + + err = pwcstombs_s(&ret, NULL, 0, wHiragana, 1); + ok(err == 0, "err = %d\n", err); + ok(ret == 5, "ret = %d\n", (int)ret); } static void test_gcvt(void) diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c index 93aa0f0..cf3cba3 100644 --- a/dlls/msvcrt/wcs.c +++ b/dlls/msvcrt/wcs.c @@ -341,7 +341,7 @@ MSVCRT_size_t CDECL MSVCRT__wcstombs_s_l(MSVCRT_size_t *ret, char *mbstr, if(!mbstr && !size) { conv = MSVCRT__wcstombs_l(NULL, wcstr, 0, locale); if(ret) - *ret = conv; + *ret = conv+1; return 0; }