RFC Fix for 9964.cc and 9507.cc on ia64-hpux
Zack Weinberg
zack@codesourcery.com
Tue Feb 3 18:00:00 GMT 2004
Pétur Runólfsson <peturr02@ru.is> writes:
> Zack Weinberg wrote:
>> The majority of the problem is bad test case code.
>
> It's pretty hard to write tests that fail portably (both of these test
> how basic_filebuf handles low-level errors).
True.
>> I've also added calls to alarm()
>> and wait() to ensure that the tests never run for more than ten
>> seconds nor do they leave child processes hanging around.
>
> This seems like a good idea for any test case that uses mkfifo.
Agreed.
>> Unfortunately, this
>> constitutes an ABI change since _M_open_mode was exported.
>
> There are lots of ABI changes between 3.3 and 3.4, including changes
> to __basic_file.
So in 3.4 I can just make _M_open_mode completely go away? Cool.
How about 3.3?
>> +static const char *fopen_mode(std::ios_base::openmode mode)
>
> This should probably be uglified and formatted as:
> static const char*
> __fopen_mode(std::ios_base::openmode __mode)
Why? It's static and it's not in any kind of header file.
>> +#ifdef _GLIBCXX_DEPRECATED
>
> This shouldn't be needed for anything in the implementor namespace.
Ok.
>> - std::filebuf* r = fbuf.open(name, std::ios_base::out | std::ios_base::ate);
>> + std::filebuf* r = fbuf.open(name, std::ios_base::in | std::ios_base::out | std::ios_base::ate);
>
> Note that the combination (std::ios_base::out | std::ios_base::ate)
> doesn't really make sense: out (without in) implies trunc, so out will
> always open at the end of the file (which is the same as the beginning)
> which means that the ate is redundant unless in is used.
Yes, indeed.
zw
More information about the Libstdc++
mailing list