From 902a1c9f1799a24b7c6b85c89d03f0ed26349cea Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Thu, 11 Mar 2004 13:04:58 +0000 Subject: [PATCH] (feed_ship): Work directly on land item arrays instead of copies made by getvec(). This is safe, because the new code changes the item array precisely when the old code writes back a changed copy. --- src/lib/update/ship.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/lib/update/ship.c b/src/lib/update/ship.c index 67ee08b0..908ba3d1 100644 --- a/src/lib/update/ship.c +++ b/src/lib/update/ship.c @@ -436,7 +436,7 @@ feed_ship(struct shpstr *sp, register int *vec, int etus, int *needed, int can_eat, need; int total_people; int to_starve; - int starved, lvec[I_MAX + 1]; + int starved; struct nstr_item ni; struct lndstr *lp; @@ -463,16 +463,14 @@ feed_ship(struct shpstr *sp, register int *vec, int etus, int *needed, if (lp->lnd_ship != sp->shp_uid) continue; need = ifood_eaten - vec[I_FOOD]; - getvec(VT_ITEM, lvec, (s_char *)lp, EF_LAND); land_eaten = (etus * eatrate) * (double)lnd_getmil(lp); - if (lvec[I_FOOD] - need > land_eaten) { + if (lp->lnd_item[I_FOOD] - need > land_eaten) { vec[I_FOOD] += need; - lvec[I_FOOD] -= need; - } else if ((lvec[I_FOOD] - land_eaten) > 0) { - vec[I_FOOD] += (lvec[I_FOOD] - land_eaten); - lvec[I_FOOD] -= (lvec[I_FOOD] - land_eaten); + lp->lnd_item[I_FOOD] -= need; + } else if (lp->lnd_item[I_FOOD] - land_eaten > 0) { + vec[I_FOOD] += lp->lnd_item[I_FOOD] - land_eaten; + lp->lnd_item[I_FOOD] -= lp->lnd_item[I_FOOD] - land_eaten; } - putvec(VT_ITEM, lvec, (s_char *)lp, EF_LAND); } } }