You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2010/09/24 17:24:39 UTC

svn commit: r1000907 - in /qpid/trunk/qpid/cpp/src/qpid/console: Broker.cpp SessionManager.cpp

Author: kgiusti
Date: Fri Sep 24 15:24:38 2010
New Revision: 1000907

URL: http://svn.apache.org/viewvc?rev=1000907&view=rev
Log:
QPID-2885: clean up memory leaks on C++ qmf console shutdown.

Modified:
    qpid/trunk/qpid/cpp/src/qpid/console/Broker.cpp
    qpid/trunk/qpid/cpp/src/qpid/console/SessionManager.cpp

Modified: qpid/trunk/qpid/cpp/src/qpid/console/Broker.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/console/Broker.cpp?rev=1000907&r1=1000906&r2=1000907&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/console/Broker.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/console/Broker.cpp Fri Sep 24 15:24:38 2010
@@ -59,6 +59,11 @@ Broker::~Broker()
 {
     connThreadBody.shutdown();
     connThread.join();
+    resetAgents();
+    // resetAgents() does not delete the broker agent...
+    for (AgentMap::iterator iter = agents.begin(); iter != agents.end(); iter++) {
+        delete iter->second;
+    }
 }
 
 string Broker::getUrl() const

Modified: qpid/trunk/qpid/cpp/src/qpid/console/SessionManager.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/console/SessionManager.cpp?rev=1000907&r1=1000906&r2=1000907&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/console/SessionManager.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/console/SessionManager.cpp Fri Sep 24 15:24:38 2010
@@ -46,6 +46,15 @@ SessionManager::~SessionManager()
     for (vector<Broker*>::iterator iter = brokers.begin();
          iter != brokers.end(); iter++)
         delete *iter;
+
+    for (map<string, Package*>::iterator iter = packages.begin();
+         iter != packages.end(); iter++) {
+        for (Package::ClassMap::iterator citer = iter->second->classes.begin();
+             citer != iter->second->classes.end();
+             citer++)
+            delete citer->second;
+        delete iter->second;
+    }
 }
 
 Broker* SessionManager::addBroker(client::ConnectionSettings& settings)



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org