Ticket #37007

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

Eröffnet am: 2017-02-19 23:48 Letztes Update: 2017-02-20 00:55

Auswertung:
Verantwortlicher:
Typ:
Status:
Geschlossen
Priorität:
5 - Mittel
Schweregrad:
5 - Mittel
Lösung:
Gefixt
Datei:
Keine

Details

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-Verlauf (3/5 Historien)

2017-02-19 23:48 Aktualisiert von: yknk
  • New Ticket "iOS版 カウンタの数値が正しく表示されない" created
2017-02-19 23:53 Aktualisiert von: yknk
Kommentar

原因

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

技術的原因

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 Aktualisiert von: yknk
Kommentar

対策

MTDashboard::_GetCounterStr

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

MTDashboardLive::_GetCounterStr

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

類似見直し

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

2017-02-19 23:53 Aktualisiert von: yknk
  • Lösung Update from Keine to Gefixt
  • Status Update from Offen to Geschlossen
  • Ticket Close date is changed to 2017-02-19 23:53
2017-02-20 00:55 Aktualisiert von: yknk
Kommentar

訂正

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

Dateianhangliste

Keine Anhänge

Bearbeiten

Please login to add comment to this ticket » Anmelden