diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h index 67d512b4f8..4ea57e6b67 100644 --- a/libs/ardour/ardour/midi_buffer.h +++ b/libs/ardour/ardour/midi_buffer.h @@ -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 ... */