Plug some libardour memory leaks
authorRobin Gareus <robin@gareus.org>
Fri, 20 Jan 2017 10:32:55 +0000 (11:32 +0100)
committerRobin Gareus <robin@gareus.org>
Fri, 20 Jan 2017 10:32:55 +0000 (11:32 +0100)
libs/ardour/io.cc
libs/ardour/worker.cc

index b5a81c71e821bf08ed65b8ac1eb13b56c2f0d4b3..8528a9cd3758a7ae278bb654c6a251a61809a718 100644 (file)
@@ -96,6 +96,7 @@ IO::~IO ()
        for (PortSet::iterator i = _ports.begin(); i != _ports.end(); ++i) {
                _session.engine().unregister_port (*i);
        }
+       delete pending_state_node; pending_state_node = 0;
 }
 
 void
@@ -662,6 +663,7 @@ IO::set_state (const XMLNode& node, int version)
 
        } else {
 
+               delete pending_state_node;
                pending_state_node = new XMLNode (node);
                pending_state_node_version = version;
                pending_state_node_in = false;
@@ -716,6 +718,7 @@ IO::set_state_2X (const XMLNode& node, int version, bool in)
 
        } else {
 
+               delete pending_state_node;
                pending_state_node = new XMLNode (node);
                pending_state_node_version = version;
                pending_state_node_in = in;
index f8a5e44aee06294c0c354e5d85bf110715a05270..0a5971fa3e22b934bcafbeae0bc79a789ed9406a 100644 (file)
@@ -50,6 +50,9 @@ Worker::~Worker()
        if (_thread) {
                _thread->join();
        }
+       delete _responses;
+       delete _requests;
+       free (_response);
 }
 
 bool