getland() is obviously redundant in get_dlist(), because the land unit
can't have changed since the previous read.
What's up with ask_olist() is less obvious. For each capable land
unit, ask_olist() asks the player whether to attack with it. If it
attacks, it gets copied into olist. Since asking the player yields
the processor, these copies can become stale. However, re-reading
fixes that just for the last one. Moreover, the code copes with stale
copies just fine: ask_olist() is always directly followed by
att_get_offense() or att_move_in_off(), and both replace the
potentially stale copy in olist.
memset(llp, 0, sizeof(struct ulist));
emp_insque(&llp->queue, olist);
llp->mobil = mobcost;
memset(llp, 0, sizeof(struct ulist));
emp_insque(&llp->queue, olist);
llp->mobil = mobcost;
- getland(land.lnd_uid, &llp->unit.land);
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
llp->chrp = (struct empobj_chr *)&lchr[(int)llp->unit.land.lnd_type];
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
llp->chrp = (struct empobj_chr *)&lchr[(int)llp->unit.land.lnd_type];
memset(llp, 0, sizeof(struct ulist));
emp_insque(&llp->queue, list);
llp->supplied = lnd_supply_all(&land);
memset(llp, 0, sizeof(struct ulist));
emp_insque(&llp->queue, list);
llp->supplied = lnd_supply_all(&land);
- getland(land.lnd_uid, &llp->unit.land);
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
llp->chrp = (struct empobj_chr *)&lchr[(int)llp->unit.land.lnd_type];
llp->x = llp->unit.land.lnd_x;
llp->y = llp->unit.land.lnd_y;
llp->chrp = (struct empobj_chr *)&lchr[(int)llp->unit.land.lnd_type];