get_dlist() collects defending land units in a list, and resupplies
them. Bug: it uses a local copy instead of the one in the list. When
att_fight() writes back the list, the commodities supplied get wiped
out, triggering a seqno oops. Broken in commit
62b9399cd "subs:
Factor lnd_insque() out of lnd_sel(), ask_olist(), ...", v4.3.33.
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
* Known contributors to this file:
* Ken Stevens, 1995
* Steve McClure, 1996-2000
* Known contributors to this file:
* Ken Stevens, 1995
* Steve McClure, 1996-2000
- * Markus Armbruster, 2006-2016
+ * Markus Armbruster, 2006-2021
intelligence_report(player->cnum, &land, a_spy,
"Scouts report defending unit:");
llp = lnd_insque(&land, list);
intelligence_report(player->cnum, &land, a_spy,
"Scouts report defending unit:");
llp = lnd_insque(&land, list);
- llp->supplied = lnd_supply_all(&land);
+ llp->supplied = lnd_supply_all(&llp->unit.land);
llp->mobil = 0.0;
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
llp->eff = llp->unit.land.lnd_effic;
llp->mobil = 0.0;
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
llp->eff = llp->unit.land.lnd_effic;
- if (lnd_spyval(&land) > *d_spyp)
- *d_spyp = lnd_spyval(&land);
+ if (lnd_spyval(&llp->unit.land) > *d_spyp)
+ *d_spyp = lnd_spyval(&llp->unit.land);