diff options
author | Robin Gareus <robin@gareus.org> | 2020-04-22 22:37:43 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2020-04-22 22:37:43 +0200 |
commit | 485ac454771a7ae5301524f9ba0a5adb28fbacf4 (patch) | |
tree | f9a514f4893c402a7f525f28bc39984c3d0c4723 /gtk2_ardour/editor.cc | |
parent | ea16fc51d328cdf1fc58972858cbc490f3fa3afa (diff) |
Fix region boundary cache lookup segfault
When the cursor position is after the last item in the vector,
upper_bound returns the last given iterator, here:
`region_boundary_cache.end()`, which is invalid to dereference.
Furthermore prevent possible duplicate prev/next pair at zero,
when using the video-timelime.
Diffstat (limited to 'gtk2_ardour/editor.cc')
-rw-r--r-- | gtk2_ardour/editor.cc | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index a6b5a34d49..584a007302 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -2995,6 +2995,9 @@ Editor::snap_to_internal (MusicSample& start, RoundMode direction, SnapPref pref prev = next; prev--; } + if (next == region_boundary_cache.end ()) { + next--; + } if ((direction == RoundUpMaybe || direction == RoundUpAlways)) { test = *next; |