From 2ee3d3e16be2d26e67f81afbb19d38cae91549af Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 21 May 2026 16:47:22 +0200 Subject: [PATCH] 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. --- src/tools/midifile.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/tools/midifile.c b/src/tools/midifile.c index f2b051bee..5525af31f 100644 --- a/src/tools/midifile.c +++ b/src/tools/midifile.c @@ -557,8 +557,11 @@ int midi_file_write_event(struct midi_file *mf, const struct midi_event *event) if (ev_size > 0 && (ev_data[0] == 0xf0 || ev_data[0] == 0xf7)) { CHECK_RES(write_n(mf, ev_data, 1)); - ev_size -= 1; - ev_data += 1; + ev_size--; + ev_data++; + + if (ev_data[ev_size-1] == 0xf0) + ev_size--; CHECK_RES(write_varlen(mf, tr, ev_size));