Incidencia #37007

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

Abrir Fecha: 2017-02-19 23:48 Última actualización: 2017-02-20 00:55

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

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
Comentario

原因

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

技術的原因

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
Comentario

対策

MTDashboard::_GetCounterStr

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

MTDashboardLive::_GetCounterStr

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

類似見直し

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

2017-02-19 23:53 Updated by: yknk
  • Ticket Close date is changed to 2017-02-19 23:53
  • Estado Update from Open to Cerrado
  • Resolución Update from Ninguno to Fixed
2017-02-20 00:55 Updated by: yknk
Comentario

訂正

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

Attachment File List

No attachments

Editar

Please login to add comment to this ticket » Entrar