diff options
-rw-r--r-- | libs/ardour/selection.cc | 10 |
1 files changed, 7 insertions, 3 deletions
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; } } } |