From eaada019258528576771b42fd9136c7ebfe01d61 Mon Sep 17 00:00:00 2001 From: Hans Baier Date: Mon, 2 Feb 2009 07:59:03 +0000 Subject: [PATCH] * added assertions to MidiBuffer::iterator_base in order to avoid offset corruption git-svn-id: svn://localhost/ardour2/branches/3.0@4474 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/ardour/ardour/midi_buffer.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libs/ardour/ardour/midi_buffer.h b/libs/ardour/ardour/midi_buffer.h index 9c5bb294c3..88aac0af64 100644 --- a/libs/ardour/ardour/midi_buffer.h +++ b/libs/ardour/ardour/midi_buffer.h @@ -57,12 +57,14 @@ public: iterator_base(B& b, size_t o) : buffer(b), offset(o) {} inline E operator*() const { uint8_t* ev_start = buffer._data + offset + sizeof(TimeType); + assert(Evoral::midi_event_size(*ev_start) >= 0); return E(EventTypeMap::instance().midi_event_type(*ev_start), - *(TimeType*)(buffer._data + offset), + *((TimeType*)(buffer._data + offset)), Evoral::midi_event_size(*ev_start) + 1, ev_start); } inline iterator_base& operator++() { uint8_t* ev_start = buffer._data + offset + sizeof(TimeType); + assert(Evoral::midi_event_size(*ev_start) >= 0); offset += sizeof(TimeType) + Evoral::midi_event_size(*ev_start) + 1; return *this; }