| Summary: | wchar output is broken | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Alexey Voinov <voins> |
| Component: | libstdc++3.3 | Assignee: | Dmitry V. Levin <ldv> |
| Status: | CLOSED FIXED | QA Contact: | qa-sisyphus |
| Severity: | blocker | ||
| Priority: | P2 | CC: | glebfm |
| Version: | unstable | ||
| Hardware: | all | ||
| OS: | Linux | ||
fixed in gcc3.4 |
$ cat > test.c #include <stdio.h> #include <wchar.h> #include <locale.h> int main(void) { setlocale(LC_ALL, ""); wprintf(L"%s\n", setlocale(LC_CTYPE, NULL)); wprintf(L"[\x0440]\n"); return 0; } $ gcc -std=c99 test.c $ ./a.out ru_RU.KOI8-R [р] $ cat > test.cc #include <iostream> #include <locale> #include <clocale> using namespace std; int main(void) { locale::global(locale("")); wcout.imbue(locale("")); wcout << L"[\x0440]" << endl; return 0; } $ g++ test.cc $ a.out [$ т.е. программа на C++ в момент вывода символа не из ASCII просто останавливается. (с кодом завершения 0). Это очень плохо. Программа на C приведена для демонстрации того, что символ правильный и вывод wchar_t в libc реализован правильно и работает.