Fixed iterator invalidation bug picked by Covertiy scan.

This commit is contained in:
Robert Osfield
2016-06-10 12:03:48 +01:00
parent 721e079211
commit 69046511de

View File

@@ -143,7 +143,10 @@ void OperationQueue::remove(Operation* operation)
itr = _operations.erase(itr);
if (needToResetCurrentIterator) _currentOperationIterator = itr;
if (needToResetCurrentIterator)
{
_currentOperationIterator = (itr==_operations.end()) ? _operations.begin() : itr;
}
}
else ++itr;
@@ -167,7 +170,10 @@ void OperationQueue::remove(const std::string& name)
itr = _operations.erase(itr);
if (needToResetCurrentIterator) _currentOperationIterator = itr;
if (needToResetCurrentIterator)
{
_currentOperationIterator = (itr==_operations.end()) ? _operations.begin() : itr;
}
}
else ++itr;
}