From e5bccdd52ec4e2f5ba7330a565b43a6265331afa Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 2 Jan 2021 08:06:57 +0100 Subject: [PATCH] assault attack board lboard paradrop: Fix defending land unit supply 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 --- src/lib/subs/attsub.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/subs/attsub.c b/src/lib/subs/attsub.c index b9242f962..e40f1b81f 100644 --- a/src/lib/subs/attsub.c +++ b/src/lib/subs/attsub.c @@ -29,7 +29,7 @@ * Known contributors to this file: * Ken Stevens, 1995 * Steve McClure, 1996-2000 - * Markus Armbruster, 2006-2016 + * Markus Armbruster, 2006-2021 */ #include @@ -1206,13 +1206,13 @@ get_dlist(struct combat *def, struct emp_qelem *list, int a_spy, 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; - 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); } } -- 2.43.0