13
0

Remove a suspected C99-ism

'lower_bound()' iterates between param #1 and param #2, comparing the result
with param #3 - either by making the comparison internally or by deferring to
an external comparator function. Prior to C99 however, BOTH cases required
param #3 to match the type being iterated.

In the case of a deferred comparison, there was apparently a proposal to
relax this restriction in C99, though I'm not sure if it in fact got
implemented (can't find any examples of it anywhere...)
This commit is contained in:
John Emmas 2020-03-05 12:52:22 +00:00
parent f49aedaa39
commit 9a3159c2c0

View File

@ -233,12 +233,13 @@ RTMidiBuffer::write (TimeType time, Evoral::EventType /*type*/, uint32_t size, c
return size;
}
/* These (non-matching) comparison arguments weren't supported prior to C99 !!!
static
bool
item_timestamp_earlier (ARDOUR::RTMidiBuffer::Item const & item, samplepos_t time)
{
return item.timestamp < time;
}
}*/
static
bool
@ -256,21 +257,22 @@ RTMidiBuffer::read (MidiBuffer& dst, samplepos_t start, samplepos_t end, MidiSta
return 0;
}
bool reverse;
Item foo;
Item* iend;
Item* item;
uint32_t count = 0;
bool reverse;
foo.timestamp = start;
if (start < end) {
iend = _data+_size;
item = lower_bound (_data, iend, start, item_timestamp_earlier);
item = lower_bound (_data, iend, foo, item_item_earlier);
reverse = false;
} else {
iend = _data;
--iend; /* yes, this is technically "illegal" but we will never indirect */
Item* uend = _data+_size;
Item foo;
foo.timestamp = start;
item = upper_bound (_data, uend, foo, item_item_earlier);
if (item == uend) {