diff --git a/common/JackMidiAPI.cpp b/common/JackMidiAPI.cpp index b06a93a2..1a651493 100644 --- a/common/JackMidiAPI.cpp +++ b/common/JackMidiAPI.cpp @@ -98,10 +98,24 @@ EXPORT jack_midi_data_t* jack_midi_event_reserve(void* port_buffer, jack_nframes_t time, size_t data_size) { JackMidiBuffer *buf = (JackMidiBuffer*)port_buffer; - if (!buf && !buf->IsValid()) + if (! buf) { + jack_error("jack_midi_event_reserve: port buffer is set to NULL"); return 0; - if (time >= buf->nframes || (buf->event_count && buf->events[buf->event_count - 1].time > time)) + } + if (! buf->IsValid()) { + jack_error("jack_midi_event_reserve: port buffer is invalid"); + return 0; + } + if (time >= buf->nframes) { + jack_error("jack_midi_event_reserve: time parameter is out of range " + "(%lu >= %lu)", time, buf->nframes); + return 0; + } + if (buf->event_count && (buf->events[buf->event_count - 1].time > time)) { + jack_error("jack_midi_event_reserve: time parameter is earlier than " + "last reserved event"); return 0; + } return buf->ReserveEvent(time, data_size); } diff --git a/common/JackMidiPort.cpp b/common/JackMidiPort.cpp index 5bd82341..2426cb72 100644 --- a/common/JackMidiPort.cpp +++ b/common/JackMidiPort.cpp @@ -52,6 +52,8 @@ SERVER_EXPORT jack_midi_data_t* JackMidiBuffer::ReserveEvent(jack_nframes_t time { jack_shmsize_t space = MaxEventSize(); if (space == 0 || size > space) { + jack_error("JackMidiBuffer::ReserveEvent - the buffer does not have " + "enough room to enqueue a %lu byte event", size); lost_events++; return 0; }