View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0009840 | ardour | bugs | public | 2024-10-27 04:47 | 2024-10-27 04:47 |
Reporter | alwinfy | Assigned To | |||
Priority | normal | Severity | crash | Reproducibility | always |
Status | new | Resolution | open | ||
Platform | GNU | OS | Linux | OS Version | (any) |
Product Version | 8.10 | ||||
Summary | 0009840: Crash in Editor::jump_backward_to_mark_flagged in certain cases | ||||
Description | In Editor::jump_backward_to_mark_flagged, if the transport is rolling and just past the very first mark in the sequencer, `pos` is set to the first mark, and `prior` is set to the past-the-end mark timepos_t::max. However, the check for `prior` being the past-the-end marker is hardcoded to do the comparison to the Audio Time past-the-end; thus if the session is set to use beat time, the location of the transport is actually set to past-the-end, and Ardour crashes. Can confirm that changing the check in gtk2_ardour/editor_ops.cc line 2564 to `== timepos_t::max (pos.time_domain())` fixes it. | ||||
Steps To Reproduce | Set the session to Beat Time; With a start/end marker on screen, start the transport rolling and immediately hit Q (jump to previous mark); the transport display gets corrupted and Ardour freezes + crashes soon after. | ||||
Tags | No tags attached. | ||||
|
0001-Fix-bug-in-Beat-Time-mode-with-going-past-the-first-.patch (754 bytes)
From 6163f3ae32feaf7d12c668ce9217545c311e73d6 Mon Sep 17 00:00:00 2001 From: Alwinfy <20421383+Alwinfy@users.noreply.github.com> Date: Sun, 27 Oct 2024 00:47:15 -0400 Subject: [PATCH] Fix bug in Beat Time mode with going past the first position marker --- gtk2_ardour/editor_ops.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index cdd7aee464..f251f6b408 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -2561,7 +2561,7 @@ Editor::jump_backward_to_mark_flagged (Location::Flags whitelist, Location::Flag } } - if (pos == timepos_t::max (Temporal::AudioTime)) { + if (pos == timepos_t::max (pos.time_domain())) { return; } -- 2.34.1 |