This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

libstdc++/5280: Problems with named locales and iostreams (gnulocale)



>Number:         5280
>Category:       libstdc++
>Synopsis:       Problems with named locales and iostreams (gnulocale)
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Jan 04 15:06:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     Peter Schmid
>Release:        3.1 20011229 (experimental)
>Organization:
TU Darmstadt
>Environment:
System: Linux kiste 2.4.17 #7 Thu Jan 3 17:21:51 CET 2002 i686 unknown
Architecture: i686
SuSE 7.3
glibc 2.2.4 + patches
host: i686-pc-linux-gnu
build: i686-pc-linux-gnu
target: i686-pc-linux-gnu
configured with: ../gcc/configure --enable-shared --disable-nls --enable-threads --enable-languages=c,c++,f77,objc --enable-concept-checks
>Description:
After updating my system libc I tried name locales again. They no longer
crash but the call to the default named locale does only partly work. For
example, consider the following code tl.C. Doubles are output
according to the default locale, the locale employed for input is read
in by the program. When LANG is set to C, everything works as
expected. Doubles separated with a comma as decimal point are
transformed into doubles with a dot as a separator. 
 
LANG=C ./tl 
de_DE
cout locale: C
cin locale: de_DE
1,2
1.2
1,3
1.3 
^D pressed

Unfortunately, when LANG is set to de_DE this does no longer work. The
comma is a not accepted as a valid separator as it should and the loop
terminates with an error. If I set LANG to a different value, for
example fr_FR, the same problem occurs.

LANG=de_DE ./tl
de_DE
cout locale: de_DE
cin locale: de_DE
1,3

>How-To-Repeat:
tl.C
#include <iostream>
#include <locale>
#include <string>
#include <cstdlib>
using namespace std;

int main()
{
  locale coutLocale("");
  cout.imbue(coutLocale);

  string s;
  cin >> s;
  if (!cin) {
    cerr << "ERROR while reading the locale" << endl;
    return EXIT_FAILURE;
  }
  

locale cinLocale(s.c_str());
cin.imbue(cinLocale);

cout << "cout locale: " << coutLocale.name() << endl;
cout << "cin locale: " << cinLocale.name() << endl;
double value;
while (cin >> value) {
  cout << value << endl;
}
}

Compiling tl.C 
g++ -v -o tl tl.C -W -Wall 
Reading specs from /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/specs
Configured with: ../gcc/configure --enable-shared --disable-nls --enable-threads --enable-languages=c,c++,f77,objc --enable-concept-checks
Thread model: posix
gcc version 3.1 20011229 (experimental)
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/cc1plus -v -D__GNUC__=3 -D__GNUC_MINOR__=1 -D__GNUC_PATCHLEVEL__=0 -D__ELF__ -Dunix -Dlinux -D__ELF__ -D__unix__ -D__linux__ -D__unix -D__linux -Asystem=posix -D__NO_INLINE__ -D__STDC_HOSTED__=1 -W -Wall -D_GNU_SOURCE -Acpu=i386 -Amachine=i386 -Di386 -D__i386 -D__i386__ -D__tune_i686__ -D__tune_pentiumpro__ tl.C -D__GNUG__=3 -D__DEPRECATED -D__EXCEPTIONS -D__GXX_ABI_VERSION=100 -quiet -dumpbase tl.C -W -Wall -version -o /tmp/cc8e37VS.s
GNU CPP version 3.1 20011229 (experimental) (cpplib) (i386 Linux/ELF)
GNU C++ version 3.1 20011229 (experimental) (i686-pc-linux-gnu)
	compiled by GNU C version 3.1 20011229 (experimental).
ignoring nonexistent directory "NONE/include"
ignoring nonexistent directory "/usr/local/i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include/g++-v3
 /usr/local/include/g++-v3/i686-pc-linux-gnu
 /usr/local/include/g++-v3/backward
 /usr/local/include
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/include
 /usr/include
End of search list.
 as -V -Qy -o /tmp/ccxwlGmA.o /tmp/cc8e37VS.s
GNU assembler version 2.11.90.0.29 (i486-suse-linux) using BFD version 2.11.90.0.29
 /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/collect2 -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o tl /usr/lib/crt1.o /usr/lib/crti.o /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtbegin.o -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1 -L/usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/../../.. /tmp/ccxwlGmA.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc /usr/local/lib/gcc-lib/i686-pc-linux-gnu/3.1/crtend.o /usr/lib/crtn.o


>Fix:
	
>Release-Note:
>Audit-Trail:
>Unformatted:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]