Fix assemble_dist_paths()'s recovery from invalid dist center

The recovery avoided crashing here, but left the path costs undefined.
If they happend to be non-negative, dodistribute() still crashed.  Set
the costs to -1 to avoid that.

While there, oops on invalid distribution center.
This commit is contained in:
Markus Armbruster 2011-02-25 08:00:59 +01:00
parent 08cb463878
commit f4db4e37b1

View file

@ -62,8 +62,6 @@ finish_sects(int etu)
}
}
memset(import_cost, 0, WORLD_SZ() * sizeof(*import_cost));
logerror("delivering...\n");
/* Do deliveries */
for (n = 0; NULL != (sp = getsectid(n)); n++) {
@ -136,23 +134,17 @@ assemble_dist_paths(double *import_cost)
char buf[512];
for (n = 0; NULL != (sp = getsectid(n)); n++) {
import_cost[n] = -1;
if ((sp->sct_dist_x == sp->sct_x) && (sp->sct_dist_y == sp->sct_y))
continue;
/* now, get the dist sector */
dist = getsectp(sp->sct_dist_x, sp->sct_dist_y);
if (dist == NULL) {
logerror("Bad dist sect %d,%d for %d,%d !\n",
sp->sct_dist_x, sp->sct_dist_y,
sp->sct_x, sp->sct_y);
if (CANT_HAPPEN(!dist))
continue;
}
/* Now, get the best distribution path over roads */
/* Note we go from the dist center to the sector. This gives
us the import path for that sector. */
path = BestDistPath(buf, dist, sp, &d);
if (path)
import_cost[n] = d;
else
import_cost[n] = -1;
}
}