This is the mail archive of the gcc-patches@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]

Re: Make istreambuf_iterator::_M_sbuf immutable and add debug checks


Hi

    Any final decision regarding this patch ?

François


On 23/10/2017 21:08, François Dumont wrote:
Hi

     I completed execution of all tests and found one test impacted by this patch.

     It is a good example of the impact of the patch. Users won't be able to build a istreambuf_iterator at a point where the underlying streambuf is at end-of-stream and then put some data in the streambuf and then use the iterator. This is similar to what Petr was proposing, some eof iterator becoming valid again through an operation on the streambuf. I would prefer we forbid it completely or we accept it completely but current middle way situation is strange.

     The fix is easy, let the compiler build the streambuf_iterator when needed. Even if patch is not accepted I think we should keep the change on the test which is fragile.

François


On 13/10/2017 19:14, François Dumont wrote:
Hi

     Here is the last patch I will propose for istreambuf_iterator. This is mostly to remove the mutable keyword on _M_sbuf.

     To do so I had to reset _M_sbuf in valid places that is to say constructors and increment operators. Despite that we might still have eof iterators with _M_sbuf not null when you have for instance several iterator instance but only increment one. It seems fine to me because even in this case iterator will still be considered as eof and using several istreambuf_iterator to go through a given streambuf is not usual.

     As _M_sbuf is immutable I have been able to restore the simple call to _M_at_eof() in the increment operators debug check.

Ok to commit after successful tests ?

François







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