From 0aef128207e915bb15d81948d1b8923048f4fe6e Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Tue, 4 May 2021 11:55:23 -0600 Subject: [PATCH] fix assumption that during dragging, a DraggingView's time_axis_view field is always a positive integer within range --- gtk2_ardour/editor_drag.cc | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/gtk2_ardour/editor_drag.cc b/gtk2_ardour/editor_drag.cc index 3570d73103..b8b1359e3e 100644 --- a/gtk2_ardour/editor_drag.cc +++ b/gtk2_ardour/editor_drag.cc @@ -1465,7 +1465,17 @@ RegionMoveDrag::finished (GdkEvent* ev, bool movement_occurred) } bool const changed_position = (_last_position.sample != _primary->region()->position()); - bool const changed_tracks = (_time_axis_views[_views.front().time_axis_view] != &_views.front().view->get_time_axis_view()); + bool changed_tracks; + + if (_views.front().time_axis_view < 0) { + if (&_views.front().view->get_time_axis_view()) { + changed_tracks = true; + } else { + changed_tracks = false; + } + } else { + changed_tracks = (_time_axis_views[_views.front().time_axis_view] != &_views.front().view->get_time_axis_view()); + } if (_copy) { @@ -6602,10 +6612,12 @@ DraggingView::DraggingView (RegionView* v, RegionDrag* parent, TimeAxisView* ita : view (v) , initial_time_axis_view (itav) { - /* note that time_axis_view may be null if the regionview was created - * as part of a copy operation. - */ - time_axis_view = parent->find_time_axis_view (&v->get_time_axis_view ()); + TimeAxisView* tav = &v->get_time_axis_view(); + if (tav) { + time_axis_view = parent->find_time_axis_view (&v->get_time_axis_view ()); + } else { + time_axis_view = -1; + } layer = v->region()->layer (); initial_y = v->get_canvas_group()->position().y; initial_playlist = v->region()->playlist ();