Comment 2 for bug 1735090

Revision history for this message
SirVer (sirver) wrote :

This is the stacktrace for the issue:

#3 0x11162af90 in InputQueueDisplay::radiogroup_changed(int) (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x101912f90)
... various stuff related to boost signal
#19 0x110fe76b6 in UI::Radiogroup::set_state(int) (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0
#20 0x11162340b in InputQueueDisplay::update_priority_buttons() (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x10190b40b)
#21 0x11161f306 in InputQueueDisplay::max_size_changed() (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x101907306)
#22 0x11162832e in InputQueueDisplay::think() (/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/../build/debug/src/widelands:x86_64+0x101

The problem is that if a window of a building is open while watching the replay and the priority buttons have been clicked in the game, this triggers the callback of the UI::Radiogroup, which assumed that it would only be called through *clicking* the buttons.

Since in the callback we do not check if the igbase can_act() for our current building_, we just send the player command. The code assumed it was sufficient to disable the radiobuttons in the replay, so the replay watcher cannot click on them.

Similar bugs might be potentially in other places too (e.g. productionsite max wares adjustments, warehouse settings or economy settings change), but I did not find any more on a quick glance.

To trigger it, the settings must have been adjusted in game and the replay must have the window open of the building that it was adjusted to.