mirror of
https://github.com/pocoproject/poco.git
synced 2025-10-30 21:50:47 +01:00
@@ -72,12 +72,18 @@ const std::string ChildrenFirstTraverse::next(Stack* itStack, bool* isFinished)
|
|||||||
bool isDepthLimitReached = isFiniteDepth() && _depthDeterminer(*itStack) >= _maxDepth;
|
bool isDepthLimitReached = isFiniteDepth() && _depthDeterminer(*itStack) >= _maxDepth;
|
||||||
if (!isDepthLimitReached && isDirectory(*itStack->top()))
|
if (!isDepthLimitReached && isDirectory(*itStack->top()))
|
||||||
{
|
{
|
||||||
DirectoryIterator child_it(itStack->top().path());
|
// check the dir is iterable
|
||||||
// check if directory is empty
|
try
|
||||||
if (child_it != _itEnd)
|
{
|
||||||
|
DirectoryIterator child_it(itStack->top().path());
|
||||||
|
// check if directory is empty
|
||||||
|
if (child_it != _itEnd)
|
||||||
|
{
|
||||||
|
itStack->push(child_it);
|
||||||
|
return child_it->path();
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
{
|
{
|
||||||
itStack->push(child_it);
|
|
||||||
return child_it->path();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -140,7 +146,17 @@ const std::string SiblingsFirstTraverse::next(Stack* itStack, bool* isFinished)
|
|||||||
{
|
{
|
||||||
std::string dir = _dirsStack.top().front();
|
std::string dir = _dirsStack.top().front();
|
||||||
_dirsStack.top().pop();
|
_dirsStack.top().pop();
|
||||||
DirectoryIterator child_it(dir);
|
DirectoryIterator child_it;
|
||||||
|
|
||||||
|
// check the dir is iterable
|
||||||
|
try
|
||||||
|
{
|
||||||
|
child_it = dir;
|
||||||
|
}
|
||||||
|
catch (...)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// check if directory is empty
|
// check if directory is empty
|
||||||
if (child_it != _itEnd)
|
if (child_it != _itEnd)
|
||||||
|
|||||||
Reference in New Issue
Block a user