At Thu, 23 May 2013 05:10:37 -0400, Rob Stewart wrote:
On May 22, 2013, at 4:11 AM, claudio.bley@gmail.com (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? 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()) { -- Claudio