13
0

Fix crash on out of range MIDI events (though this shouldn't be possible at all....).

git-svn-id: svn://localhost/ardour2/branches/3.0@3357 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2008-05-16 02:35:37 +00:00
parent 504a3d765f
commit 722b85e828
2 changed files with 8 additions and 4 deletions

View File

@ -764,8 +764,8 @@ MidiRegionView::add_note(const boost::shared_ptr<Note> note)
ev_rect->property_y2() = y1 + floor(midi_stream_view()->note_height()); ev_rect->property_y2() = y1 + floor(midi_stream_view()->note_height());
if (note->duration() == 0) { if (note->duration() == 0) {
cerr << "MidiModel: WARNING: Discovered note with duration 0 and pitch" << note->note() cerr << "MidiModel: WARNING: Discovered note with duration 0 and pitch"
<< " at time " << note->time() << endl; << (int)note->note() << " at time " << note->time() << endl;
if (_active_notes) { if (_active_notes) {
assert(note->note() < 128); assert(note->note() < 128);
_active_notes[note->note()] = ev_rect; _active_notes[note->note()] = ev_rect;

View File

@ -101,8 +101,12 @@ MidiModel::const_iterator::const_iterator(const MidiModel& model, double t)
} }
assert(x >= 0); assert(x >= 0);
assert(y >= i->first.min());
assert(y <= i->first.max()); if (y >= i->first.min() || y <= i->first.max()) {
cerr << "ERROR: Event value '" << y << "' out of range ["
<< i->first.min() << "," << i->first.max() << "], ignored" << endl;
continue;
}
const MidiControlIterator new_iter(i->second->list(), x, y); const MidiControlIterator new_iter(i->second->list(), x, y);