summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2016-02-24 23:36:15 +0100
committerRobin Gareus <robin@gareus.org>2016-02-24 23:36:52 +0100
commita6af411af7ade161483ae688f5e1868d481a8fce (patch)
treeac2d17de2fc3689b80e7dd63f03e314904e1f287 /libs
parent8d81f121e5b68030eea5444c3ebad14d6a0bfa82 (diff)
potential mem corruption at session close:
ARDOUR::Session::~Session() ARDOUR::Route::~Route() ARDOUR::InternalReturn::~InternalReturn() ARDOUR::Return::~Return() ARDOUR::Session::unmark_return_id(unsigned int) boost::dynamic_bitset<unsigned int, std::allocator<unsigned int> >::reference::do_assign(bool) -> Invalid write of size 4 -> 0 bytes inside a block of size 4 free'd Thanks to The_CLA for valgrinding this.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/session.cc1
1 files changed, 1 insertions, 0 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 3509ee19a5..d0fe74db21 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -5501,6 +5501,7 @@ Session::unmark_aux_send_id (uint32_t id)
void
Session::unmark_return_id (uint32_t id)
{
+ if (_state_of_the_state & Deletion) { return; }
if (id < return_bitset.size()) {
return_bitset[id] = false;
}