diff --git a/src/osg/OperationThread.cpp b/src/osg/OperationThread.cpp index aec1f98f2..888c003f9 100644 --- a/src/osg/OperationThread.cpp +++ b/src/osg/OperationThread.cpp @@ -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; }