Tíquete #37007

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

: 2017-02-19 23:48 Última Atualização: 2017-02-20 00:55

Relator:
Dono:
Tipo:
Estado:
Fechado
Prioridade:
5 - Medium
Gravidade:
5 - Medium
Resolução:
Fixed
Arquivo:
Nenhum

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 History (3/5 Histories)

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

原因

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

技術的原因

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
Comentário

対策

MTDashboard::_GetCounterStr

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

MTDashboardLive::_GetCounterStr

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

類似見直し

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

2017-02-19 23:53 Updated by: yknk
  • Resolução Update from Nenhum to Fixed
  • Estado Update from Aberto to Fechado
  • Ticket Close date is changed to 2017-02-19 23:53
2017-02-20 00:55 Updated by: yknk
Comentário

訂正

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

Attachment File List

No attachments

Editar

Please login to add comment to this ticket » Login