fix crash when removing a TimeAxisView from the selection
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 21 Feb 2017 18:11:14 +0000 (19:11 +0100)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 21 Feb 2017 18:11:14 +0000 (19:11 +0100)
gtk2_ardour/selection.cc

index 298889e329ab2daf9c8d9a0d638cbf88bc5e4580..6ed7a104347695974dc08247700752a00c60790a 100644 (file)
@@ -648,8 +648,14 @@ Selection::remove (TimeAxisView* track)
 {
        list<TimeAxisView*>::iterator i;
        if ((i = find (tracks.begin(), tracks.end(), track)) != tracks.end()) {
-               track->set_selected (false);
+               /* erase first, because set_selected() will remove the track
+                  from the selection, invalidating the iterator.
+
+                  In fact, we don't really even need to do the erase, but this is
+                  a hangover of axis view selection being in the GUI.
+               */
                tracks.erase (i);
+               track->set_selected (false);
        }
 }