potential mem corruption at session close:
authorRobin Gareus <robin@gareus.org>
Wed, 24 Feb 2016 22:36:15 +0000 (23:36 +0100)
committerRobin Gareus <robin@gareus.org>
Wed, 24 Feb 2016 22:36:52 +0000 (23:36 +0100)
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.

libs/ardour/session.cc

index 3509ee19a582c24d774ca2b1721ad38225b3770b..d0fe74db2141850f5a1f77f4caf8db8be537f3db 100644 (file)
@@ -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;
        }