From a2002d169f5a1807c20417c9d777ed3d7f4889ab Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 4 Feb 2015 10:27:33 -0800 Subject: [PATCH] fix for exception handled lookup in LimitedNodeList --- libraries/networking/src/LimitedNodeList.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/libraries/networking/src/LimitedNodeList.cpp b/libraries/networking/src/LimitedNodeList.cpp index 4957084279..06b3b6a0db 100644 --- a/libraries/networking/src/LimitedNodeList.cpp +++ b/libraries/networking/src/LimitedNodeList.cpp @@ -412,25 +412,27 @@ void LimitedNodeList::handleNodeKill(const SharedNodePointer& node) { SharedNodePointer LimitedNodeList::addOrUpdateNode(const QUuid& uuid, NodeType_t nodeType, const HifiSockAddr& publicSocket, const HifiSockAddr& localSocket) { - try { - SharedNodePointer matchingNode = _nodeHash.at(uuid); + NodeHash::const_iterator it = _nodeHash.find(uuid); + + if (it != _nodeHash.end()) { + SharedNodePointer& matchingNode = it->second; matchingNode->setPublicSocket(publicSocket); matchingNode->setLocalSocket(localSocket); return matchingNode; - } catch (std::out_of_range) { + } else { // we didn't have this node, so add them Node* newNode = new Node(uuid, nodeType, publicSocket, localSocket); - SharedNodePointer newNodeSharedPointer(newNode, &QObject::deleteLater); + SharedNodePointer newNodePointer(newNode); - _nodeHash.insert(UUIDNodePair(newNode->getUUID(), newNodeSharedPointer)); + _nodeHash.insert(UUIDNodePair(newNode->getUUID(), newNodePointer)); qDebug() << "Added" << *newNode; - emit nodeAdded(newNodeSharedPointer); + emit nodeAdded(newNodePointer); - return newNodeSharedPointer; + return newNodePointer; } }