This is the mail archive of the
mailing list for the libstdc++ project.
Re: [PATCH] basic_filebuf: 45628 + non-modal I/O
> Which case? Throwing from imbue?
What we just committed, 45628 + seeks.
> Fair nuff. The elimination of _M_reading/writing was something I anticipated to have a high
> risk/reward ratio in the first placeâ maybe that affected my approach to it.
Sure, but note that the idea itself of reusing two data members with a different semantics isn't straightforward at all, would be probably the first time *ever* we do something similar. Even if we believe it should be fine for the instantiations for char / wchar_t, which are exported extern template.
> Although the basic
> change is mostly accomplished with a search+replace to substitute the function calls for data
> members, the secondary changes had a surprising cascade effect. Caching always_noconv
> alters the invariants of _M_codecvt. The semantics of _M_post_overflow are unsatisfactory
> considering exceptions, so right now I'm working on changing it to _M_need_unshift. That is
> also potentially cleaner, but upon trying to debug it, I got hit with a testcase failures, including
> an imbue testcase! (Diagnosing that right now.)
In general a clean-up reusing the new _M_get_ext seems a sensible and moderately safe idea at this stage.
> As I said before embarking on this round, and again in the last message, there are other
> things to do. There are a number of tangible benefits to having overflow preserve any
> unwritten part of the put area, including the standard specifically requiring it. So I'll try to wrap
> this up, post it to the list for posterity, and we can revisit this cluster later.
I'm all eyes ;)