Akihiro Sagawa : msvcrt: Fix mbstowcs with empty strings.
Alexandre Julliard
julliard at winehq.org
Tue Aug 8 07:36:37 CDT 2017
Module: wine
Branch: master
Commit: 967fb744e4af99b61e6af9a7c2ddde4640b54ebf
URL: http://source.winehq.org/git/wine.git/?a=commit;h=967fb744e4af99b61e6af9a7c2ddde4640b54ebf
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Fri Aug 4 23:06:39 2017 +0900
msvcrt: Fix mbstowcs with empty strings.
Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msvcrt/mbcs.c | 14 ++++++++------
dlls/msvcrt/tests/string.c | 6 +++---
2 files changed, 11 insertions(+), 9 deletions(-)
diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c
index 93bb1a7..49d6678 100644
--- a/dlls/msvcrt/mbcs.c
+++ b/dlls/msvcrt/mbcs.c
@@ -2278,12 +2278,14 @@ MSVCRT_size_t CDECL MSVCRT__mbstowcs_l(MSVCRT_wchar_t *wcstr, const char *mbstr,
size += (MSVCRT__isleadbyte_l((unsigned char)mbstr[size], locale) ? 2 : 1);
}
- size = MultiByteToWideChar(locinfo->lc_codepage, 0,
- mbstr, size, wcstr, count);
- if(!size) {
- if(count) wcstr[0] = '\0';
- *MSVCRT__errno() = MSVCRT_EILSEQ;
- return -1;
+ if(size) {
+ size = MultiByteToWideChar(locinfo->lc_codepage, 0,
+ mbstr, size, wcstr, count);
+ if(!size) {
+ if(count) wcstr[0] = '\0';
+ *MSVCRT__errno() = MSVCRT_EILSEQ;
+ return -1;
+ }
}
if(size<count && wcstr)
diff --git a/dlls/msvcrt/tests/string.c b/dlls/msvcrt/tests/string.c
index 87e387a..8de2f43 100644
--- a/dlls/msvcrt/tests/string.c
+++ b/dlls/msvcrt/tests/string.c
@@ -1900,7 +1900,7 @@ static void test_mbstowcs(void)
ok(!memcmp(wOut, wHiragana, sizeof(wHiragana)), "wOut = %s\n", wine_dbgstr_w(wOut));
ret = mbstowcs(wOut, mEmpty, 6);
- todo_wine ok(ret == 0, "mbstowcs did not return 0, got %d\n", (int)ret);
+ ok(ret == 0, "mbstowcs did not return 0, got %d\n", (int)ret);
ok(!memcmp(wOut, wEmpty, sizeof(wEmpty)), "wOut = %s\n", wine_dbgstr_w(wOut));
ret = wcstombs(mOut, wHiragana, 6);
@@ -1928,8 +1928,8 @@ static void test_mbstowcs(void)
ok(!memcmp(wOut, wHiragana, sizeof(wHiragana)), "wOut = %s\n", wine_dbgstr_w(wOut));
err = pmbstowcs_s(&ret, wOut, 6, mEmpty, _TRUNCATE);
- todo_wine ok(err == 0, "err = %d\n", err);
- todo_wine ok(ret == 1, "mbstowcs_s did not return 1, got %d\n", (int)ret);
+ ok(err == 0, "err = %d\n", err);
+ ok(ret == 1, "mbstowcs_s did not return 1, got %d\n", (int)ret);
ok(!memcmp(wOut, wEmpty, sizeof(wEmpty)), "wOut = %s\n", wine_dbgstr_w(wOut));
err = pmbstowcs_s(&ret, NULL, 0, mHiragana, 1);
More information about the wine-cvs
mailing list