macOS版 データサイズゼロのシステムエクスクルーシブ送信でクラッシュする
macOS 11対応で、Universal MIDI PacketによるMIDIデータ送信処理を実装した際に作り込んだ不具合。
当該MIDIデータに、先頭と末尾のみのシステムエクスクルーシブデータ(F0 F7)が含まれていた。 本来であれば先頭F0と末尾F7の間にMIDI音源に送信するデータを挟むはずであるが、それが存在していなかった。
MIDIデータ送信処理(SMOutDevCtrl::_SendLongMsg2)でUniversal MIDI Packetを組み立てる時、 システムエクスクルーシブデータは先頭F0と末尾F7を取り除くため、パケットに登録するデータのサイズはゼロになる。 ワード数にゼロを指定してMIDIEventListAddを呼び出したところで落ちていた。
本事象の発生条件は、macOS 11以降かつMIDITrail for macOS Ver.1.3.2以降。
MIDIデータ送信処理(SMOutDevCtrl::_SendLongMsg2)で、Universal MIDI Packetに登録する システムエクスクルーシブデータ(先頭F0と末尾F7を除く)のサイズがゼロの場合は、MIDIデータ送信処理をスキップする。
TBMEDLEY.MID(タイムボカンメドレー)を演奏すると、4分25秒経過時点で必ずアプリが強制終了する。
iOS版の対策をマージする。