summaryrefslogtreecommitdiff
path: root/libs/ardour/control_protocol_manager.cc
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-08-03 18:43:12 +0200
committerRobin Gareus <robin@gareus.org>2017-08-03 19:25:14 +0200
commitd0c934a9de31df9ea0f6046fa074ea9fe17e8b07 (patch)
treec9ce0b7f8ad5e363f3bd35eafd602aaa07af1d7c /libs/ardour/control_protocol_manager.cc
parent81f12f602bf40b3801b1bb9162fd0737ecc6782d (diff)
Fix crash when cleaning up w/o destroying session
- Control-protocols may transmit data during cleanup (e.g. reset surface), and need the Audio-engine to do so. - destroying the ControlProtocolManager w/o the Session calling ::drop_protocols(), lead to a double free.
Diffstat (limited to 'libs/ardour/control_protocol_manager.cc')
-rw-r--r--libs/ardour/control_protocol_manager.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/libs/ardour/control_protocol_manager.cc b/libs/ardour/control_protocol_manager.cc
index 8616848467..bd5b7e72a6 100644
--- a/libs/ardour/control_protocol_manager.cc
+++ b/libs/ardour/control_protocol_manager.cc
@@ -76,6 +76,7 @@ ControlProtocolManager::~ControlProtocolManager()
for (list<ControlProtocolInfo*>::iterator p = control_protocol_info.begin(); p != control_protocol_info.end(); ++p) {
+ (*p)->protocol = 0; // protocol was already destroyed above.
delete (*p);
}