Piotr Caban : msvcrt: Added space for nullbyte in size returned by wcstombs_s and mbstowcs_s.

Alexandre Julliard julliard at winehq.org
Wed Mar 30 13:15:48 CDT 2011


Module: wine
Branch: master
Commit: fdffe548f10d4b07a8fb0af9668ba310824b2304
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=fdffe548f10d4b07a8fb0af9668ba310824b2304

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Wed Mar 30 15:45:04 2011 +0200

msvcrt: Added space for nullbyte in size returned by wcstombs_s and mbstowcs_s.

---

 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;
     }
 




More information about the wine-cvs mailing list