Fix crash on iteration over an empty sequence and/or recording controllers only.
authorDavid Robillard <d@drobilla.net>
Mon, 16 Feb 2009 04:46:06 +0000 (04:46 +0000)
committerDavid Robillard <d@drobilla.net>
Mon, 16 Feb 2009 04:46:06 +0000 (04:46 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@4596 d708f5d6-7413-0410-9779-e7cbd77b26cf

libs/evoral/src/Sequence.cpp

index d11988e70c58798e6f285cc3d4de1ee85d91bca8..39d5355dd08924aea9de4ff36ce707555b71f8c9 100644 (file)
@@ -186,10 +186,10 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
                seq.control_to_midi_event(_event, earliest_control);
                break;
        default:
-               assert(false);
+               break;
        }
 
-       if (!_event || _event->size() == 0) {
+       if (_type == NIL || !_event || _event->size() == 0) {
                DUMP(format("Starting at end @ %1%\n") % t);
                _type   = NIL;
                _is_end = true;
@@ -200,10 +200,8 @@ Sequence<Time>::const_iterator::const_iterator(const Sequence<Time>& seq, Time t
                                % (int)_event->event_type()
                                % (int)((MIDIEvent<Time>*)_event.get())->type()
                                % _event->time());
+               assert(midi_event_is_valid(_event->buffer(), _event->size()));
        }
-       
-       assert(_event && _event->size() > 0 && _event->time() >= t);
-       assert(midi_event_is_valid(_event->buffer(), _event->size()));
 }
 
 template<typename Time>