チケット #45577

sdl2: Happiness dialog crash in a ruleset without EFT_CONTENT buildings

登録: 2022-09-05 13:49 最終更新: 2022-09-18 17:32

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
2

詳細

Looking at clang analyzer warning.

sdl2-client redraw_happiness_city_dialog() has "surf = NULL;" until it finds a building providing EFT_MAKE_CONTENT effect. If there's no such a building, surf will still be NULL at: "dest.x = city_window->size.x + adj_size(187) - surf->w - adj_size(2);"

チケットの履歴 (6 件中 3 件表示)

2022-09-05 13:49 更新者: cazfi
  • 新しいチケット "sdl2: Happiness dialog crash in a ruleset without EFT_CONTENT buildings" が作成されました
2022-09-05 23:12 更新者: cazfi
コメント

That code is broken in general.

First it gets a list of effects of certain type (e.g. "Make Content") active on the city. So far all good. But then when it iterates over that list, it looks for the effect type of each. That's of course always the very type that was the criteria for constructing the list. Then it looks what would be the first building in the ruleset, not necessarily even present in the city, to provide such an effect. End result is that if ruleset has buildigs a, b, c, and d providing "Make Content" effect and the city has built b, c, and d, the code would draw three times icon of a.

2022-09-05 23:50 更新者: cazfi
  • 担当者(未割り当て) から cazfi に更新されました
  • 解決法なし から 受領 に更新されました
  • マイルストーン(未割り当て) から 3.0.4 (完了済み) に更新されました
コメント

Will push S3_0 version to S2_6 too. It didn't apply to sdl-client, and porting seemed too much work for a deprecated client of an officially EOL branch.

2022-09-18 17:32 更新者: cazfi
  • 状況オープン から 完了 に更新されました
  • 解決法受領 から 修正済み に更新されました

編集

このチケットにコメントを追加するには、ログインが必要です » ログインする