From b1587940e46d220a696d6cf11b9b0efd3b144b85 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 27 May 2019 14:10:59 +0200 Subject: [PATCH] Fix crash when deleting selected region-view in ripple mode #7764 Changing the playlist (remove_region) invalidates selection and unsets `clicked_regionview`. The region to operate on needs to be stored for later use. --- gtk2_ardour/editor_ops.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 306bf4f906..1c9df29d3d 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4456,12 +4456,15 @@ Editor::remove_clicked_region () begin_reversible_command (_("remove region")); boost::shared_ptr playlist = clicked_routeview->playlist(); + boost::shared_ptr region = clicked_regionview->region(); playlist->clear_changes (); playlist->clear_owned_changes (); - playlist->remove_region (clicked_regionview->region()); - if (Config->get_edit_mode() == Ripple) - playlist->ripple (clicked_regionview->region()->position(), -clicked_regionview->region()->length(), boost::shared_ptr()); + playlist->remove_region (region); + + if (Config->get_edit_mode() == Ripple) { + playlist->ripple (region->position(), - region->length(), boost::shared_ptr()); + } /* We might have removed regions, which alters other regions' layering_index, so we need to do a recursive diff here.