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
|