This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/36899] New: Wrong char to wchar_t conversion when putting multibyte strings to wide-character streams
- From: "mironov dot ivan at gmail dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 22 Jul 2008 14:51:56 -0000
- Subject: [Bug libstdc++/36899] New: Wrong char to wchar_t conversion when putting multibyte strings to wide-character streams
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Small example:
==================================================
#include <iostream>
#include <locale>
using namespace std;
int main()
{
locale::global(locale(""));
wcout.imbue(locale());
wcout << "Hello world! ðÒÉ×ÅÔ ÍÉÒ!" << endl;
return 0;
}
==================================================
Actual output:
Hello world! !
Expected output:
Hello world! ðÒÉ×ÅÔ ÍÉÒ!
Compilation command and output:
==================================================
$ g++ -v -save-temps cpptest.cpp
Using built-in specs.
Target: x86_64-pc-linux-gnu
Configured with:
/var/tmp/portage/sys-devel/gcc-4.3.1-r1/work/gcc-4.3.1/configure --prefix=/usr
--bindir=/usr/x86_64-pc-linux-gnu/gcc-bin/4.3.1
--includedir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include
--datadir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.1
--mandir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.1/man
--infodir=/usr/share/gcc-data/x86_64-pc-linux-gnu/4.3.1/info
--with-gxx-include-dir=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4
--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --disable-altivec
--enable-nls --without-included-gettext --with-system-zlib --disable-checking
--disable-werror --enable-secureplt --enable-multilib --disable-libmudflap
--disable-libssp --enable-cld --disable-libgcj
--enable-languages=c,c++,treelang,fortran --enable-shared
--enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu
--with-bugurl=http://bugs.gentoo.org/ --with-pkgversion='Gentoo 4.3.1-r1 p1.1'
Thread model: posix
gcc version 4.3.1 (Gentoo 4.3.1-r1 p1.1)
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/cc1plus -E -quiet -v -D_GNU_SOURCE
cpptest.cpp -mtune=generic -fpch-preprocess -o cpptest.ii
ignoring nonexistent directory "/usr/local/include"
ignoring nonexistent directory
"/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4/x86_64-pc-linux-gnu
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include/g++-v4/backward
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/include-fixed
/usr/include
End of search list.
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/cc1plus -fpreprocessed cpptest.ii
-quiet -dumpbase cpptest.cpp -mtune=generic -auxbase cpptest -version -o
cpptest.s
GNU C++ (Gentoo 4.3.1-r1 p1.1) version 4.3.1 (x86_64-pc-linux-gnu)
compiled by GNU C version 4.3.1, GMP version 4.2.2, MPFR version 2.3.1.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 70848920b58e0e1c3b1cfc0cd9dd8b3c
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/bin/as
-V -Qy -o cpptest.o cpptest.s
GNU assembler version 2.18 (x86_64-pc-linux-gnu) using BFD version (GNU
Binutils) 2.18
COMPILER_PATH=/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/libexec/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/libexec/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/bin/
LIBRARY_PATH=/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/lib/:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-save-temps' '-shared-libgcc' '-mtune=generic'
/usr/libexec/gcc/x86_64-pc-linux-gnu/4.3.1/collect2 --eh-frame-hdr -m
elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/crt1.o
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/crti.o
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/crtbegin.o
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64 -L/lib/../lib64
-L/usr/lib/../lib64
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../x86_64-pc-linux-gnu/lib
-L/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../.. cpptest.o -lstdc++ -lm
-lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/crtend.o
/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.1/../../../../lib64/crtn.o
==================================================
System: linux (gentoo), amd64
--
Summary: Wrong char to wchar_t conversion when putting multibyte
strings to wide-character streams
Product: gcc
Version: 4.3.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: mironov dot ivan at gmail dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36899