OSDN Ticket Archive


Ticket #37007

iOS版 カウンタの数値が正しく表示されない

登録: 2017-02-19 23:48 最終更新: 2017-02-20 00:55

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

詳細

iOS版 Ver 1.1.0において、カウンタが不正な数値で表示される。

正常なカウンタ表示
00:00/05:43 094 4/4 001/122 00000/04412

iOS版 Ver 1.1.0のカウンタ表示
00:00/05:43 094 17179869188/4 523986010113/122 18949395709952/04412

チケットの履歴

2017-02-19 23:48 更新者: yknk
  • 新しいチケット "iOS版 カウンタの数値が正しく表示されない" が作成されました
2017-02-19 23:53 更新者: yknk
コメント

原因

カウンタ表示文字列生成処理の不具合。

技術的原因

MTDashboard::_GetCounterStr

snprintfに指定するフォーマット文字列において、unsigned intの値に対応する フォーマットに%luを指定していた。しかし%luは、unsigned longに対応するものである。

iOS 64bit環境では、unsigned intは32bit、unsigned longは64bitになるため、 値とフォーマットの不整合により、数値文字列が不正になった。

String Format Specifiers
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Strings/Articles/formatSpecifiers.html

動機的原因

Ver.1.0.1までは、カウンタに表示するパラメータにunsigned longの値を指定していたが、 iOS 64bit対応(#36981)にてunsigned longはすべてunsigned intに変換していた。 よって本現象は64bit対応によるデグレードである。

2017-02-19 23:53 更新者: yknk
コメント

対策

MTDashboard::_GetCounterStr

フォーマット文字列について、%luを%uに修正する。

MTDashboardLive::_GetCounterStr

フォーマット文字列について、%luを%uに修正する。

類似見直し

printfでgrepし、フォーマット文字列で%luを利用しているところが他にないか確認した。

2017-02-19 23:53 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました
  • チケット完了時刻2017-02-19 23:53 に更新されました
2017-02-20 00:55 更新者: yknk
コメント

訂正

MTDashboardLive::_GetCounterStrの修正は行なっていない。 もともと%luを利用していなかった。対策の記載ミス。

添付ファイルリスト

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