From 8642f5476de1f86f25c0c5791cef0abfbef46a62 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 12 May 2021 19:13:06 +0200 Subject: [PATCH] Ensure that immediate events are not accidentally replaced All Immediate events have the same action samples, while other parameters differ. Those events must not be removed by a call to _remove_event(), particularly not SessionEvent::Overwrite --- libs/ardour/session_events.cc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libs/ardour/session_events.cc b/libs/ardour/session_events.cc index 70d8ed2474..5f4a3f42df 100644 --- a/libs/ardour/session_events.cc +++ b/libs/ardour/session_events.cc @@ -125,6 +125,7 @@ SessionEventManager::remove_event (samplepos_t sample, SessionEvent::Type type) void SessionEventManager::replace_event (SessionEvent::Type type, samplepos_t sample, samplepos_t target) { + assert (sample != SessionEvent::Immediate); SessionEvent* ev = new SessionEvent (type, SessionEvent::Replace, sample, target, 0); queue_event (ev); } @@ -297,6 +298,7 @@ SessionEventManager::_remove_event (SessionEvent* ev) for (i = events.begin(); i != events.end(); ++i) { if ((*i)->type == ev->type && (*i)->action_sample == ev->action_sample) { + assert ((*i)->action_sample != SessionEvent::Immediate); if ((*i) == ev) { ret = true; }