EF_PLANE is closed before EF_LAND: if a land unit carries a plane, the
plane goes away before its carrier, and unit_onresize() oopses. Fix
by not checking cargo list consistency there when the file is already
gone.
unit_cargo_init() has a similar issue, at least theoretically: it
rebuilds cargo lists one after the other. Zap them all first.
struct lndstr *lp;
struct nukstr *np;
- for (i = EF_SHIP; i <= EF_NUKE; i++) {
- nclink[i] = 0;
+ memset(nclink, 0, sizeof(nclink));
+ for (i = EF_SHIP; i <= EF_NUKE; i++)
unit_onresize(i);
- }
for (i = 0; (pp = getplanep(i)); i++) {
if (!pp->pln_own)
clink_init(&cl[i]);
clink[type] = cl;
nclink[type] = n;
- clink_check(type);
+ if (ef_flags(type) & EFF_MEM)
+ clink_check(type);
return 0;
}