summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2009-03-25 13:54:41 +0000
committerCorinna Vinschen <corinna@vinschen.de>2009-03-25 13:54:41 +0000
commitb10a036a926fb8abb2315efdf38880f7dfea7f4d (patch)
tree6a18910e9c0fb4dd799016ee4a54fcfd34c3554c
parent6396c8889f45e2c2454e4756812f4033e33b13f3 (diff)
downloadcygnal-b10a036a926fb8abb2315efdf38880f7dfea7f4d.tar.gz
cygnal-b10a036a926fb8abb2315efdf38880f7dfea7f4d.tar.bz2
cygnal-b10a036a926fb8abb2315efdf38880f7dfea7f4d.zip
* strfuncs.cc (sys_wcstombs): Don't convert ASCII SO into two
ASCII SO's.
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/strfuncs.cc5
2 files changed, 7 insertions, 3 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index f4ad4b02c..ed134d806 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,10 @@
2009-03-25 Corinna Vinschen <corinna@vinschen.de>
+ * strfuncs.cc (sys_wcstombs): Don't convert ASCII SO into two
+ ASCII SO's.
+
+2009-03-25 Corinna Vinschen <corinna@vinschen.de>
+
* environ.cc (environ_init): Break from locale loop after first hit.
* fhandler_console.cc (fhandler_console::write_normal): Print a SO
sequence using always valid Unicode chars.
diff --git a/winsup/cygwin/strfuncs.cc b/winsup/cygwin/strfuncs.cc
index adadc32b7..03e14c015 100644
--- a/winsup/cygwin/strfuncs.cc
+++ b/winsup/cygwin/strfuncs.cc
@@ -320,9 +320,8 @@ sys_wcstombs (char *dst, size_t len, const PWCHAR src, size_t nwc)
pw &= 0xff;
int bytes = _wctomb_r (_REENT, buf, pw, &ps);
/* Convert chars invalid in the current codepage to a sequence
- ASCII SO; UTF-8 representation of invalid char.
- Do the same for ASCII SO itself. */
- if ((bytes == -1 || pw == 0x0e) && *__locale_charset () != 'U'/*TF-8*/)
+ ASCII SO; UTF-8 representation of invalid char. */
+ if (bytes == -1 && *__locale_charset () != 'U'/*TF-8*/)
{
buf[0] = 0x0e; /* ASCII SO */
bytes = __utf8_wctomb (_REENT, buf + 1, pw, __locale_charset (), &ps);