Incidencia #42424

iOS版 チャンクサイズ不正の標準MIDIファイル読み込み対応

Abrir Fecha: 2021-05-30 23:47 Última actualización: 2021-06-02 08:31

Informador:
Propietario:
Estado:
Cerrado
Prioridad:
5 - Medium
Gravedad:
5 - Medium
Resolución:
Fixed
Fichero:
Ninguno

Details

MIDIファイル読み込み時にエラーが発生するとの報告があった。

ダウンロードしたファイルを展開して、MIDITrailでファイルを開くとエラーメッセージが表示される。

  • SimCity 2000 (1993).zip -> "Track 01.MID"

MIDITrail Ver 1.3.3 for iOS でファイルを開いた時のエラーは以下の通り。

---------------------------
ERROR
---------------------------
File read error.

FILE: SMFileReader.mm
LINE: 706
INFO: 0000016F 00000001
---------------------------
OK   
---------------------------

macOS版の以下チケットをマージする。

  • #42365 macOS版 チャンクサイズ不正の標準MIDIファイル読み込み対応

参考:Windows版チケット

  • #42234 Win版 チャンクサイズ不正の標準MIDIファイル読み込み対応

Ticket History (3/5 Histories)

2021-05-30 23:47 Updated by: yknk
  • New Ticket "iOS版 チャンクサイズ不正の標準MIDIファイル読み込み対応" created
2021-05-30 23:47 Updated by: yknk
Comentario

原因

エラーが発生したMIDIファイル(Track 01.MID)は、 チャンクサイズ(トラックサイズ)が5919byteと宣言されているにも関わらず、実際はトラック終端まで5918byteであった。 残りの1byteを読み取ろうとして、エラーが発生していた。

ファイル末尾は以下の通り。

2F 00 トラック終端  ここまで5918byte
00    謎の1byte     ここまで5919byte
[EOF]

2021-05-30 23:48 Updated by: yknk
Comentario

対策方針

データ異常の可能性はあるが、トラック終端からチャンクサイズに到達するまでのデータを 読み飛ばすことで、ファイルを読み込めるようにする。

2021-05-30 23:48 Updated by: yknk
Comentario

対策

SMFileReader::_ReadTrackEvents

トラック終端を読み取った後に、指定されたチャンクサイズまでファイルを読み飛ばす処理を追加。

SMFileReader::_ReadEventMeta

トラック終端フラグ(pIsEndOfTrack)を設定するときの判定方法が誤っていた。 バグであるがこれまで実害はなかった。

  • 変更前:statusが0x2Fならばトラック終端
  • 変更後:typeが0x2Fならばトラック終端
2021-06-02 08:31 Updated by: yknk
  • Estado Update from Open to Cerrado
  • Resolución Update from Ninguno to Fixed

Attachment File List

No attachments

Editar

Please login to add comment to this ticket » Entrar