From d3b19f36fd85bab43458bf76096a69505d8182a3 Mon Sep 17 00:00:00 2001 From: Stephen Birarda Date: Wed, 26 Aug 2015 14:43:09 -0700 Subject: [PATCH] don't use remove_if since it can't be used on associative --- libraries/networking/src/PacketReceiver.cpp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/libraries/networking/src/PacketReceiver.cpp b/libraries/networking/src/PacketReceiver.cpp index c55461e8cf..556216bbd1 100644 --- a/libraries/networking/src/PacketReceiver.cpp +++ b/libraries/networking/src/PacketReceiver.cpp @@ -200,7 +200,7 @@ void PacketReceiver::registerVerifiedListener(PacketType type, QObject* object, qCWarning(networking) << "Registering a packet listener for packet type" << type << "that will remove a previously registered listener"; } - + // add the mapping _packetListenerMap[type] = ObjectMethodPair(QPointer(object), slot); } @@ -210,10 +210,17 @@ void PacketReceiver::unregisterListener(QObject* listener) { { QMutexLocker packetListenerLocker(&_packetListenerLock); - std::remove_if(std::begin(_packetListenerMap), std::end(_packetListenerMap), - [&listener](const ObjectMethodPair& pair) { - return pair.first == listener; - }); + + // clear any registrations for this listener + auto it = _packetListenerMap.begin(); + + while (it != _packetListenerMap.end()) { + if (it->first == listener) { + it = _packetListenerMap.erase(it); + } + + ++it; + } } QMutexLocker directConnectSetLocker(&_directConnectSetMutex);