From: Yuxuan Shui yshui@codeweavers.com
--- dlls/dmime/midi.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/dlls/dmime/midi.c b/dlls/dmime/midi.c index d7147d867b3..6b4d62fe168 100644 --- a/dlls/dmime/midi.c +++ b/dlls/dmime/midi.c @@ -364,6 +364,23 @@ static HRESULT read_midi_event(IStream *stream, struct event *event, BYTE last_s return E_FAIL; } break; + case MIDI_META_SET_TEMPO: + if (length != 3) + { + ERR("Invalid MIDI meta event length %lu for set tempo event.\n", length); + return E_FAIL; + } + if ((hr = IStream_Read(stream, &event->data.fixed.byte[0], length, NULL)) != S_OK) + return hr; + event->data.integer = (event->data.fixed.byte[0] << 16) | + (event->data.fixed.byte[1] << 8) | + event->data.fixed.byte[2]; + if (event->data.integer == 0) + { + ERR("Invalid tempo value 0\n"); + return E_FAIL; + } + break; default: offset.QuadPart = length; if (FAILED(hr = IStream_Seek(stream, offset, STREAM_SEEK_CUR, NULL))) return hr;