midifile: correctly write sysex chunks

In midifile we can write sysex continuation chunks starting with
0xf7 but we should not write the trailing 0xf0 byte, if any.
This commit is contained in:
Wim Taymans 2026-05-21 16:47:22 +02:00
parent 981613075f
commit 2ee3d3e16b

View file

@ -557,8 +557,11 @@ int midi_file_write_event(struct midi_file *mf, const struct midi_event *event)
if (ev_size > 0 && if (ev_size > 0 &&
(ev_data[0] == 0xf0 || ev_data[0] == 0xf7)) { (ev_data[0] == 0xf0 || ev_data[0] == 0xf7)) {
CHECK_RES(write_n(mf, ev_data, 1)); CHECK_RES(write_n(mf, ev_data, 1));
ev_size -= 1; ev_size--;
ev_data += 1; ev_data++;
if (ev_data[ev_size-1] == 0xf0)
ev_size--;
CHECK_RES(write_varlen(mf, tr, ev_size)); CHECK_RES(write_varlen(mf, tr, ev_size));