don't return an iterator from killNodeAtHashIterator

This commit is contained in:
Stephen Birarda 2014-01-15 12:44:46 -08:00
parent b4438c04c6
commit 0b52b8266e
2 changed files with 10 additions and 6 deletions
libraries/shared/src

View file

@ -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;

View file

@ -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;