Fix erasing events in MIDIBuffer

When the last event in a MIDI buffer was erased, the whole buffer
was assumed to be empty (bug introduced in 7.5-96-gc5511040ec)
This commit is contained in:
Robin Gareus 2023-12-15 08:50:10 +01:00
parent 066df7cc1a
commit c3b55240b1
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04

View File

@ -153,12 +153,18 @@ public:
size_t total_data_deleted = align32 (sizeof(TimeType) + sizeof (Evoral::EventType) + event_size);
if (i.offset + total_data_deleted >= _size) {
if (total_data_deleted >= _size) {
_size = 0;
_silent = true;
return end();
}
if (i.offset + total_data_deleted >= _size) {
assert (_size > total_data_deleted);
_size -= total_data_deleted;
return end();
}
/* we need to avoid the temporary malloc that memmove would do,
so copy by hand. remember: this is small amounts of data ...
*/