Piotr Caban : msvcrt: Fix C locale handling in wcstombs.

Alexandre Julliard julliard at winehq.org
Tue Jun 14 12:04:34 CDT 2016


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

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Tue Jun 14 11:57:20 2016 +0200

msvcrt: Fix C locale handling in wcstombs.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/wcs.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/dlls/msvcrt/wcs.c b/dlls/msvcrt/wcs.c
index c6091a8..4935e54 100644
--- a/dlls/msvcrt/wcs.c
+++ b/dlls/msvcrt/wcs.c
@@ -477,6 +477,24 @@ static MSVCRT_size_t MSVCRT_wcsrtombs_l(char *mbstr, const MSVCRT_wchar_t **wcst
     else
         locinfo = locale->locinfo;
 
+    if(!locinfo->lc_codepage) {
+        MSVCRT_size_t i;
+
+        if(!mbstr)
+            return strlenW(*wcstr);
+
+        for(i=0; i<count; i++) {
+            if((*wcstr)[i] > 255) {
+                *MSVCRT__errno() = MSVCRT_EILSEQ;
+                return -1;
+            }
+
+            mbstr[i] = (*wcstr)[i];
+            if(!(*wcstr)[i]) break;
+        }
+        return i;
+    }
+
     if(!mbstr) {
         tmp = WideCharToMultiByte(locinfo->lc_codepage, WC_NO_BEST_FIT_CHARS,
                 *wcstr, -1, NULL, 0, NULL, &used_default)-1;




More information about the wine-cvs mailing list