diff options
author | Robin Gareus <robin@gareus.org> | 2017-08-03 18:43:12 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-08-03 19:25:14 +0200 |
commit | d0c934a9de31df9ea0f6046fa074ea9fe17e8b07 (patch) | |
tree | c9ce0b7f8ad5e363f3bd35eafd602aaa07af1d7c /libs/ardour/control_protocol_manager.cc | |
parent | 81f12f602bf40b3801b1bb9162fd0737ecc6782d (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.cc | 1 |
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); } |