(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
authorcelestar
Wed, 09 Mar 2005 15:37:36 +0000
changeset 1467 6be9302390be
parent 1466 93e67e9654c5
child 1468 87ffabf776f2
(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
roadveh_cmd.c
--- a/roadveh_cmd.c	Wed Mar 09 11:49:34 2005 +0000
+++ b/roadveh_cmd.c	Wed Mar 09 15:37:36 2005 +0000
@@ -1695,13 +1695,8 @@
 		}
 
 		//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 @@
 				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 @@
 							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 @@
 		firststop = stop = NULL;
 	}
 
-no_stop:
 	if (v->vehstatus & VS_STOPPED)
 		return;