Follow-up Comment #1, patch #3525 (project wesnoth):
Some complement info on this report:
In the attached replay (you can check the in-game chat as it is focusing on
the issue), the side=2 has three units in his recall list:
"Wolf Rider-19" (Purk in chat), "Orcish Archer-34" and "Wolf Rider-17"
(Erinak).
At turn 1, side=2 disband "Wolf Rider-17" through the recall management
dialog. However at line 412 of the replay, we see that the game engine is
sending [disband] command with "Wolf Rider-19".
Later in turn 1, side=2 recall "Wolf Rider-19" that still shows in his own
recall management windows (see line 984 of the replay).
As this unit has been disbanded on other connections (other player + obs),
this generates an OOS.
The recall management dialog is powered by code in menu_events.cpp (starting
from line 3747 in BFW 1.10.2)
The original code is:
assert(dismissed_unit != recall_list.end());
recall_list.erase(dismissed_unit);
recorder.add_disband(dismissed_unit->id());
The assumption is that the recall_list.erase() call is invalidating the
dismissed_unit pointer (recall_list is a std::vector). Hence the
recorder.add_disband() is using rubbish data.
The patch as proposed by Natasiel is fixing the problem.
That part of the code is unchanged in trunk and would most probably lead to
the same OOS. The patch should thus be applied in both branches/1.10 and
trunk.
- FAAB
(file #16501)
_______________________________________________________
Additional Item Attachment:
File name: MP_campaign_-_WC_NM_2_replay.gz Size:38 KB
_______________________________________________________
Reply to this item at:
<http://gna.org/patch/?3525>
_______________________________________________
Message sent via/by Gna!
http://gna.org/
_______________________________________________
Wesnoth-bugs mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-bugs