diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index f4ad4b02c..ed134d806 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2009-03-25 Corinna Vinschen + + * strfuncs.cc (sys_wcstombs): Don't convert ASCII SO into two + ASCII SO's. + 2009-03-25 Corinna Vinschen * environ.cc (environ_init): Break from locale loop after first hit. 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);