assault: Plug memory leak in spies sneaking ashore
We free struct olist only for spies that get killed. Leaks since spies were added in 4.0.0. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
d54b3f6da5
commit
1f0caf4aed
1 changed files with 4 additions and 7 deletions
|
@ -193,15 +193,14 @@ only_spies(struct combat off[], struct emp_qelem *olist)
|
||||||
static void
|
static void
|
||||||
sneak_ashore(struct emp_qelem *olist, struct combat *def)
|
sneak_ashore(struct emp_qelem *olist, struct combat *def)
|
||||||
{
|
{
|
||||||
struct emp_qelem *qp, *next;
|
struct emp_qelem *qp;
|
||||||
struct ulist *llp;
|
struct ulist *llp;
|
||||||
struct lndstr *lp;
|
struct lndstr *lp;
|
||||||
int rel;
|
int rel;
|
||||||
|
|
||||||
pr("Trying to sneak on shore...\n");
|
pr("Trying to sneak on shore...\n");
|
||||||
|
|
||||||
for (qp = olist->q_forw; qp != olist; qp = next) {
|
for (qp = olist->q_forw; qp != olist; qp = qp->q_forw) {
|
||||||
next = qp->q_forw;
|
|
||||||
llp = (struct ulist *)qp;
|
llp = (struct ulist *)qp;
|
||||||
lp = &llp->unit.land;
|
lp = &llp->unit.land;
|
||||||
rel = relations_with(def->own, player->cnum);
|
rel = relations_with(def->own, player->cnum);
|
||||||
|
@ -210,7 +209,6 @@ sneak_ashore(struct emp_qelem *olist, struct combat *def)
|
||||||
lp->lnd_x = def->x;
|
lp->lnd_x = def->x;
|
||||||
lp->lnd_y = def->y;
|
lp->lnd_y = def->y;
|
||||||
lp->lnd_ship = -1;
|
lp->lnd_ship = -1;
|
||||||
putland(lp->lnd_uid, lp);
|
|
||||||
} else {
|
} else {
|
||||||
pr("%s was spotted", prland(lp));
|
pr("%s was spotted", prland(lp));
|
||||||
if (rel <= HOSTILE) {
|
if (rel <= HOSTILE) {
|
||||||
|
@ -219,8 +217,6 @@ sneak_ashore(struct emp_qelem *olist, struct combat *def)
|
||||||
def->own));
|
def->own));
|
||||||
pr(" and was killed in the attempt.\n");
|
pr(" and was killed in the attempt.\n");
|
||||||
lp->lnd_effic = 0;
|
lp->lnd_effic = 0;
|
||||||
putland(lp->lnd_uid, lp);
|
|
||||||
lnd_put_one(llp);
|
|
||||||
} else {
|
} else {
|
||||||
wu(0, def->own, "%s spy spotted in %s.\n",
|
wu(0, def->own, "%s spy spotted in %s.\n",
|
||||||
cname(player->cnum), xyas(def->x, def->y,
|
cname(player->cnum), xyas(def->x, def->y,
|
||||||
|
@ -229,8 +225,9 @@ sneak_ashore(struct emp_qelem *olist, struct combat *def)
|
||||||
lp->lnd_x = def->x;
|
lp->lnd_x = def->x;
|
||||||
lp->lnd_y = def->y;
|
lp->lnd_y = def->y;
|
||||||
lp->lnd_ship = -1;
|
lp->lnd_ship = -1;
|
||||||
putland(lp->lnd_uid, lp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lnd_put(olist);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue