From 0b52b8266ee4b846e3abcbafa50b58e41a0f1067 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 15 Jan 2014 12:44:46 -0800 Subject: [PATCH] don't return an iterator from killNodeAtHashIterator --- libraries/shared/src/NodeList.cpp | 14 +++++++++----- libraries/shared/src/NodeList.h | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libraries/shared/src/NodeList.cpp b/libraries/shared/src/NodeList.cpp index 2cfa490e44..b90367123e 100644 --- a/libraries/shared/src/NodeList.cpp +++ b/libraries/shared/src/NodeList.cpp @@ -274,7 +274,9 @@ void NodeList::clear() { // iterate the nodes in the list while (nodeItem != _nodeHash.end()) { - nodeItem = killNodeAtHashIterator(nodeItem); + NodeHash::iterator previousNodeItem = nodeItem; + ++nodeItem; + killNodeAtHashIterator(previousNodeItem); } } @@ -440,14 +442,13 @@ void NodeList::killNodeWithUUID(const QUuid& nodeUUID) { } } -NodeHash::iterator NodeList::killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill) { +void NodeList::killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill) { qDebug() << "Killed" << *nodeItemToKill.value(); emit nodeKilled(nodeItemToKill.value()); - return _nodeHash.erase(nodeItemToKill); + _nodeHash.erase(nodeItemToKill); } - void NodeList::sendKillNode(const char* nodeTypes, int numNodeTypes) { unsigned char packet[MAX_PACKET_SIZE]; unsigned char* packetPosition = packet; @@ -790,7 +791,10 @@ void NodeList::removeSilentNodes() { if ((usecTimestampNow() - node->getLastHeardMicrostamp()) > NODE_SILENCE_THRESHOLD_USECS) { // call our private method to kill this node (removes it and emits the right signal) - nodeItem = killNodeAtHashIterator(nodeItem); + NodeHash::iterator previousNodeItem = nodeItem; + ++nodeItem; + + killNodeAtHashIterator(previousNodeItem); } else { // we didn't kill this node, push the iterator forwards ++nodeItem; diff --git a/libraries/shared/src/NodeList.h b/libraries/shared/src/NodeList.h index 8e8555a98f..d128eb94df 100644 --- a/libraries/shared/src/NodeList.h +++ b/libraries/shared/src/NodeList.h @@ -137,7 +137,7 @@ private: void processKillNode(unsigned char* packetData, size_t dataBytes); - NodeHash::iterator killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill); + void killNodeAtHashIterator(NodeHash::iterator& nodeItemToKill); NodeHash _nodeHash; QString _domainHostname;