subs: Factor lnd_insque() out of lnd_sel(), ask_olist(), ...
... get_dlist(), att_reacting_units(). This loses malloc() error checking in ask_olist() and get_dlist(). No great loss, because we don't check in so many other places, including att_reacting_units(). We should use a wrapper that terminates on error, though. Left for another day. ask_olist(), get_dlist() and att_reacting_units() zero the struct ulist with memset(). lnd_insque() doesn't, so these functions need to zero any members not otherwise initialized explicitly now. Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
parent
e62af86066
commit
62b9399cdf
3 changed files with 26 additions and 35 deletions
|
@ -29,7 +29,7 @@
|
|||
* Known contributors to this file:
|
||||
* Ken Stevens, 1995
|
||||
* Steve McClure, 1998-2000
|
||||
* Markus Armbruster, 2004-2012
|
||||
* Markus Armbruster, 2004-2014
|
||||
*/
|
||||
|
||||
#include <config.h>
|
||||
|
@ -396,8 +396,6 @@ void
|
|||
lnd_sel(struct nstr_item *ni, struct emp_qelem *list)
|
||||
{
|
||||
struct lndstr land;
|
||||
struct lchrstr *lcp;
|
||||
struct ulist *llp;
|
||||
int this_mot;
|
||||
int mobtype = MOB_MOVE; /* indeterminate */
|
||||
|
||||
|
@ -436,20 +434,31 @@ lnd_sel(struct nstr_item *ni, struct emp_qelem *list)
|
|||
}
|
||||
}
|
||||
|
||||
lcp = &lchr[(int)land.lnd_type];
|
||||
land.lnd_mission = 0;
|
||||
land.lnd_rflags = 0;
|
||||
land.lnd_harden = 0;
|
||||
memset(land.lnd_rpath, 0, sizeof(land.lnd_rpath));
|
||||
putland(land.lnd_uid, &land);
|
||||
llp = malloc(sizeof(struct ulist));
|
||||
llp->chrp = (struct empobj_chr *)lcp;
|
||||
llp->unit.land = land;
|
||||
llp->mobil = land.lnd_mobil;
|
||||
emp_insque(&llp->queue, list);
|
||||
lnd_insque(&land, list);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Append LP to LIST.
|
||||
* Return the new list link.
|
||||
*/
|
||||
struct ulist *
|
||||
lnd_insque(struct lndstr *lp, struct emp_qelem *list)
|
||||
{
|
||||
struct ulist *mlp = malloc(sizeof(struct ulist));
|
||||
|
||||
mlp->chrp = (struct empobj_chr *)&lchr[lp->lnd_type];
|
||||
mlp->unit.land = *lp;
|
||||
mlp->mobil = lp->lnd_mobil;
|
||||
emp_insque(&mlp->queue, list);
|
||||
return mlp;
|
||||
}
|
||||
|
||||
/* This function assumes that the list was created by lnd_sel */
|
||||
void
|
||||
lnd_mar(struct emp_qelem *list, double *minmobp, double *maxmobp,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue