待辦事項 #37007

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

啟用日期: 2017-02-19 23:48 最後更新: 2017-02-20 00:55

回報者:
負責人:
類型:
狀態:
關閉
優先權:
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

Ticket History (3/5 Histories)

2017-02-19 23:48 Updated by: yknk
  • New Ticket "iOS版 カウンタの数値が正しく表示されない" created
2017-02-19 23:53 Updated by: 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 Updated by: yknk
評語

対策

MTDashboard::_GetCounterStr

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

MTDashboardLive::_GetCounterStr

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

類似見直し

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

2017-02-19 23:53 Updated by: yknk
  • 處理結果 Update from to 修正
  • 狀態 Update from 開啟 to 關閉
  • Ticket Close date is changed to 2017-02-19 23:53
2017-02-20 00:55 Updated by: yknk
評語

訂正

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

Attachment File List

No attachments

編輯

Please login to add comment to this ticket » 登入