* added assertions to MidiBuffer::iterator_base in order to avoid offset corruption
authorHans Baier <hansfbaier@googlemail.com>
Mon, 2 Feb 2009 07:59:03 +0000 (07:59 +0000)
committerHans Baier <hansfbaier@googlemail.com>
Mon, 2 Feb 2009 07:59:03 +0000 (07:59 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@4474 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/ardour/ardour/midi_buffer.h

index 9c5bb294c3e8ff51892c8ab4c0fc933440bedf31..88aac0af64c000a54e00417a3b91820cbb20a860 100644 (file)
@@ -57,12 +57,14 @@ public:
                iterator_base<B,E>(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<B,E>& 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;
                }