From 24b8004bf74884e5fc4f6c376ba782402712ab49 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 8 May 2017 10:36:04 +0100 Subject: when removing Stripables from CoreSelection by ID, be sure to remove all possible entries in the Selection A Stripable may have itself plus zero-to-N automation controls in CoreSelection. --- libs/ardour/selection.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libs/ardour/selection.cc') diff --git a/libs/ardour/selection.cc b/libs/ardour/selection.cc index 876056c3da..6775759fc9 100644 --- a/libs/ardour/selection.cc +++ b/libs/ardour/selection.cc @@ -249,10 +249,14 @@ CoreSelection::remove_stripable_by_id (PBD::ID const & id) { Glib::Threads::RWLock::WriterLock lm (_lock); - for (SelectedStripables::iterator x = _stripables.begin(); x != _stripables.end(); ++x) { + for (SelectedStripables::iterator x = _stripables.begin(); x != _stripables.end(); ) { if ((*x).stripable == id) { - _stripables.erase (x); - return; + x = _stripables.erase (x); + /* keep going because there may be more than 1 pair of + stripable/automation-control in the selection. + */ + } else { + ++x; } } } -- cgit v1.2.3