MIDI Events lost causing stucked notes

After some users complained about cases in which they played live and got stucked notes because some note-off MIDI events were dropped (and it was hard to reproduce), I found that the problem is in function:

MidiMessageCollector::removeNextBlockOfMessages

Inside that function we check for ‘if (numSourceSamples > maxBlockLengthToUse)’ and in there we are changing the startSample, calling to findNextSamplePosition and so skipping some MIDI events which are dropped.

I mean - it looks like that by design the code intends to throw away some MIDI events.

If I understand correctly, the idea of that code is to map the original time stamps from ‘seconds’ units to a ‘sample position’ units, but why this code allows dropping events?

Am I missing something?