stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: [jira] Commented: (STDCXX-333) std::wfilebuf extracts more than 1 character from a 1 byte file
Date Mon, 19 Feb 2007 20:35:19 GMT
Mark Brown (JIRA) wrote:
>     [ https://issues.apache.org/jira/browse/STDCXX-333?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12474266
] 
> 
> Mark Brown commented on STDCXX-333:
> -----------------------------------
> 
> I tried to see if I could reproduce this problem on Cygwin. My version of Cygwin doesn't
have any locales so I tried to generate the en_US.UTF-8 locale using the stdcxx localedef
program. I got this error:
> 
> nls$ ../bin/localedef -c -f /home/mbrown/stdcxx/etc/nls/charmaps/UTF-8 -i /home/mbrown/stdcxx/etc/nls/src/en_US
en_US.UTF-8
> call to system LC_ALL=C /usr/bin/locale -a >/tmp/tdf4.0 2>/dev/null: No such file
or directory
> Hangup

This looks like an unrelated problem. Could you open a new issue for it?

Thanks
Martin

> 
> 
>> std::wfilebuf extracts more than 1 character from a 1 byte file
>> ---------------------------------------------------------------
>>
>>                 Key: STDCXX-333
>>                 URL: https://issues.apache.org/jira/browse/STDCXX-333
>>             Project: C++ Standard Library
>>          Issue Type: Bug
>>          Components: 27. Input/Output
>>    Affects Versions: 4.1.3
>>         Environment: gcc 3.2.3 on Linux
>>            Reporter: Mark Brown
>>
>> I get an an abort when I run the following program on Linux.
>> #include <cassert>
>> #include <fstream>
>> #include <iostream>
>> int main ()
>> {
>>     {
>>         std::filebuf fb;
>>         fb.open ("file", std::ios::out);
>>         fb.sputc ('a');
>>     }
>>     std::wfilebuf fb;
>>     fb.pubimbue (std::locale ("en_US.UTF-8"));
>>     fb.open ("file", std::ios::in);
>>     const int c[] = { fb.sbumpc (), fb.sgetc () };
>>     std::cout << c [0] << ' ' << c [1] << std::endl;
>>     assert (L'a' == c [0]);
>>     assert (std::wfilebuf::traits_type::eof () == c [1]);
>> }
>> test: test.cpp:21: int main(): Assertion `std::wfilebuf::traits_type::eof () == c
[1]' failed.
>> Aborted
> 



Mime
View raw message