From: Michael Stefaniuc mstefani@winehq.org
No real behavior change as this event must appear at the end of the track and must be the last message in the track. --- dlls/dmime/midi.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/dmime/midi.c b/dlls/dmime/midi.c index 159546fee1c..62dd9a755ce 100644 --- a/dlls/dmime/midi.c +++ b/dlls/dmime/midi.c @@ -160,6 +160,13 @@ static HRESULT read_midi_event(IStream *stream, struct midi_event *event, BYTE * free(str); /* Skip over this event */ return read_midi_event(stream, event, last_status, bytes_left); + case MIDI_META_END_OF_TRACK: + if (length) + { + ERR("Invalid MIDI meta event length %lu for end of track event.\n", length); + return E_FAIL; + } + break; case MIDI_META_SET_TEMPO: if (length != 3) { @@ -384,6 +391,8 @@ static HRESULT midi_parser_parse(struct midi_parser *parser, IDirectMusicSegment parser->time += event.delta_time; if (event.status == MIDI_META) { + if (event.meta_type == MIDI_META_END_OF_TRACK) + break; switch (event.meta_type) { case MIDI_META_SET_TEMPO: