summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcelestar <celestar@openttd.org>2005-03-09 15:37:36 +0000
committercelestar <celestar@openttd.org>2005-03-09 15:37:36 +0000
commit6e1e4f1dc23115b33e78e15e0b94af7eb87e582a (patch)
tree43e886b5d1f42f555fb7133dc45f5c6fa453332b
parent34f14e657dda7e3c6e54894a4f889c9165357da7 (diff)
downloadopenttd-6e1e4f1dc23115b33e78e15e0b94af7eb87e582a.tar.xz
(svn r1971) -Codechange: Got rid of two ugly gotos and replaced them by one elegant and one ugly non-goto. Credits for 1959 go to Darkvater. Sorry
-rw-r--r--roadveh_cmd.c16
1 files changed, 6 insertions, 10 deletions
diff --git a/roadveh_cmd.c b/roadveh_cmd.c
index fb078b174..17d93ea85 100644
--- a/roadveh_cmd.c
+++ b/roadveh_cmd.c
@@ -1695,13 +1695,8 @@ void OnNewDay_RoadVeh(Vehicle *v)
}
//We do not have a slot, so make one
- if (v->u.road.slot == NULL) {
- //first we need to find out how far our stations are away.
- if ( rs == NULL ) {
- free(firststop);
- firststop = stop = NULL;
- goto no_stop;
- }
+ if (v->u.road.slot == NULL && rs != NULL) {
+ //first we need to find out how far our stations are away.
DEBUG(ms, 2) ("Multistop: Attempting to obtain a slot for vehicle %d at station %d (0x%x)", v->unitnumber, st->index, st->xy);
do {
@@ -1729,6 +1724,7 @@ void OnNewDay_RoadVeh(Vehicle *v)
stop = firststop;
for (k = 0; k < num; k++) {
int i;
+ bool br = false;
for (i = 0; i < NUM_SLOTS; i++) {
if ((stop->rs->slot[i] == INVALID_SLOT) && (stop->dist < 120)) {
@@ -1741,15 +1737,16 @@ void OnNewDay_RoadVeh(Vehicle *v)
v->u.road.slot_age = -30;
v->u.road.slotindex = i;
- goto have_slot; //jump out of BOTH loops
+ br = true;
+ break;
}
}
stop++;
+ if (br) break;
}
}
-have_slot:
//now we couldn't assign a slot for one reason or another.
//so we just go to the nearest station
if (v->u.road.slot == NULL) {
@@ -1762,7 +1759,6 @@ have_slot:
firststop = stop = NULL;
}
-no_stop:
if (v->vehstatus & VS_STOPPED)
return;