From 69046511de59c491b59e5fa2cdb8c109dd112da2 Mon Sep 17 00:00:00 2001 From: Robert Osfield Date: Fri, 10 Jun 2016 12:03:48 +0100 Subject: [PATCH] Fixed iterator invalidation bug picked by Covertiy scan. --- src/osg/OperationThread.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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; }