OSDN Ticket Archive


Ticket #42831

macOS版 データサイズゼロのシステムエクスクルーシブ送信でクラッシュする

登録: 2021-09-07 23:43 最終更新: 2021-09-07 23:45

報告者:
yknk
担当者:
yknk
チケットの種類:
バグ
状況:
完了
コンポーネント:
MIDITrail Ver.1.3.x for macOS
マイルストーン:
Version 1.3.4 for macOS (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

TBMEDLEY.MID(タイムボカンメドレー)を演奏すると、4分25秒経過時点で必ずアプリが強制終了する。

iOS版の対策をマージする。

  • #42795 iOS版 データサイズゼロのシステムエクスクルーシブ送信でクラッシュする

チケットの履歴

2021-09-07 23:43 更新者: yknk
  • 新しいチケット "macOS版 データサイズゼロのシステムエクスクルーシブ送信でクラッシュする" が作成されました
2021-09-07 23:44 更新者: yknk
コメント

原因

macOS 11対応で、Universal MIDI PacketによるMIDIデータ送信処理を実装した際に作り込んだ不具合。

  • #41895 macOS版 macOS 11 Big Sur 対応(Core MIDI 新API対応)

当該MIDIデータに、先頭と末尾のみのシステムエクスクルーシブデータ(F0 F7)が含まれていた。 本来であれば先頭F0と末尾F7の間にMIDI音源に送信するデータを挟むはずであるが、それが存在していなかった。

MIDIデータ送信処理(SMOutDevCtrl::_SendLongMsg2)でUniversal MIDI Packetを組み立てる時、 システムエクスクルーシブデータは先頭F0と末尾F7を取り除くため、パケットに登録するデータのサイズはゼロになる。 ワード数にゼロを指定してMIDIEventListAddを呼び出したところで落ちていた。

本事象の発生条件は、macOS 11以降かつMIDITrail for macOS Ver.1.3.2以降。

2021-09-07 23:45 更新者: yknk
コメント

対策

MIDIデータ送信処理(SMOutDevCtrl::_SendLongMsg2)で、Universal MIDI Packetに登録する システムエクスクルーシブデータ(先頭F0と末尾F7を除く)のサイズがゼロの場合は、MIDIデータ送信処理をスキップする。

2021-09-07 23:45 更新者: yknk
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました

添付ファイルリスト

添付ファイルはありません