Boost logo

Boost :

Subject: Re: [boost] [filesystem] fix recur_dir_itr_imp::increment(system::error_code* ec) in 1.54.0
From: Claudio Bley (claudio.bley_at_[hidden])
Date: 2013-12-19 03:25:02


PING...

At Tue, 11 Jun 2013 08:17:26 +0200,
Claudio Bley wrote:
>
> Ping?
>
> At Fri, 24 May 2013 10:23:31 +0200,
> Claudio Bley wrote:
> >
> > At Thu, 23 May 2013 05:10:37 -0400,
> > Rob Stewart wrote:
> > >
> > > On May 22, 2013, at 4:11 AM, claudio.bley_at_[hidden] (Claudio Bley) wrote:
> > >
> > > > What's happening to the filesystem library? It seems there's no progress on any tickets in the bug tracker?
> > >
> > > I'll speculate that Beman has been focused on the Filesystem
> > > proposal, endian, etc.,
> >
> > OK, everyone's busy, I know. But some of these bugs have a long
> > history and date back more than a year ago. I know next to nothing
> > about Boost's development process, so bear with me. But is Beman the
> > only one looking at the bugs for the filesystem library and able to
> > do something about it?
> >
> > > not to mention recovering from a recent injury.
> >
> > I hope he's alright, wishing all the best!
> >
> >
> > But, what about my original question? Can we get this fix into 1.54.0?

(sigh) 1.54 was missed, 1.55 is already released; how to get this fix
into the next Boost version?

> > I'm quoting it here for convenience:
> >
> > --- >8 ------- 8< ------- >8 ----- 8< -------- >8 ---------- 8< -----------------
> >
> > With v3, the directory_iterator at the top of the stack is invalid
> > (ie. an end iterator) if an error occurs. So, you cannot dereference
> > it, and you cannot use any other method (e.g. no_push) on it,
> > otherwise std::abort will be called.
> >
> > Simple fix: just don't push an end iterator to m_stack.
> >
> > --- C:\Users\Claudio\src\boost.svn\boost\filesystem\operations.hpp 2012-07-24 08:43:28 +0200
> > +++ boost\filesystem\operations.hpp 2013-03-25 17:21:39 +0100
> > @@ -791,9 +791,11 @@
> > m_stack.push(directory_iterator(m_stack.top()->path()));
> > else
> > {
> > - m_stack.push(directory_iterator(m_stack.top()->path(), *ec));
> > + directory_iterator next = directory_iterator(m_stack.top()->path(), *ec);
> > if (*ec)
> > return;
> > + else
> > + m_stack.push(next);
> > }
> > if (m_stack.top() != directory_iterator())
> > {
> >


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk