diff options
author | Robin Gareus <robin@gareus.org> | 2016-07-25 17:16:32 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2016-07-25 17:16:32 +0200 |
commit | eec294a97edce69ca71c972867ab708d5dd5625d (patch) | |
tree | d48202a8e6b5978ba1d6d5a83a574b3a91687460 /libs/ardour/control_protocol_manager.cc | |
parent | ac8f4baa002db37506a84088861b7a288dcdfae6 (diff) |
the endless quest to plug memory leaks -- episode 378
Diffstat (limited to 'libs/ardour/control_protocol_manager.cc')
-rw-r--r-- | libs/ardour/control_protocol_manager.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc index 2b0a4dce4c..a0a36c17dd 100644 --- a/libs/ardour/control_protocol_manager.cc +++ b/libs/ardour/control_protocol_manager.cc @@ -43,6 +43,22 @@ using namespace PBD; ControlProtocolManager* ControlProtocolManager::_instance = 0; const string ControlProtocolManager::state_node_name = X_("ControlProtocols"); + +ControlProtocolInfo::~ControlProtocolInfo () +{ + if (protocol && descriptor) { + descriptor->destroy (descriptor, protocol); + protocol = 0; + } + + delete state; state = 0; + + if (descriptor) { + delete (Glib::Module*) descriptor->module; + descriptor = 0; + } +} + ControlProtocolManager::ControlProtocolManager () { } @@ -434,6 +450,7 @@ ControlProtocolManager::set_state (const XMLNode& node, int /*version*/) ControlProtocolInfo* cpi = cpi_by_name (prop->value()); if (cpi) { + delete cpi->state; cpi->state = new XMLNode (**citer); if (active) { |