diff --git a/Foundation/src/DirectoryIterator.cpp b/Foundation/src/DirectoryIterator.cpp index bc5f53452..432c593f9 100644 --- a/Foundation/src/DirectoryIterator.cpp +++ b/Foundation/src/DirectoryIterator.cpp @@ -15,7 +15,7 @@ #include "Poco/DirectoryIterator.h" -#if defined(POCO_OS_FAMILY_WINDOWS) +#if defined(POCO_OS_FAMILY_WINDOWS) #include "DirectoryIterator_WIN32U.cpp" #elif defined(POCO_OS_FAMILY_UNIX) #include "DirectoryIterator_UNIX.cpp" @@ -72,13 +72,16 @@ DirectoryIterator::~DirectoryIterator() DirectoryIterator& DirectoryIterator::operator = (const DirectoryIterator& it) { - if (_pImpl) _pImpl->release(); - _pImpl = it._pImpl; - if (_pImpl) + if (&it != this) { - _pImpl->duplicate(); - _path = it._path; - _file = _path; + if (_pImpl) _pImpl->release(); + _pImpl = it._pImpl; + if (_pImpl) + { + _pImpl->duplicate(); + _path = it._path; + _file = _path; + } } return *this; }