From ad1285e1deed4a4ce3cabd52500f618cecebe436 Mon Sep 17 00:00:00 2001 From: Alan Conway Date: Wed, 11 Feb 2009 14:34:07 +0000 Subject: Fix memory leak in cluster code. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@743346 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/cluster/Decoder.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'cpp/src/qpid/cluster/Decoder.cpp') diff --git a/cpp/src/qpid/cluster/Decoder.cpp b/cpp/src/qpid/cluster/Decoder.cpp index 4645a489c8..1ba36bb521 100644 --- a/cpp/src/qpid/cluster/Decoder.cpp +++ b/cpp/src/qpid/cluster/Decoder.cpp @@ -33,8 +33,12 @@ Decoder::Decoder(const Handler& h, ConnectionMap& cm) : handler(h), connections( void Decoder::decode(const EventHeader& eh, const void* data) { ConnectionId id = eh.getConnectionId(); - std::pair ib = map.insert(id, new ConnectionDecoder(handler)); - ptr_map_ptr(ib.first)->decode(eh, data, connections); + Map::iterator i = map.find(id); + if (i == map.end()) { + std::pair ib = map.insert(id, new ConnectionDecoder(handler)); + i = ib.first; + } + ptr_map_ptr(i)->decode(eh, data, connections); } void Decoder::erase(const ConnectionId& c) { -- cgit v1.2.1