pathfind.c
changeset 2136 2c9fda706e52
parent 2125 3098398bf7ff
child 2137 0e686b34c3a9
--- a/pathfind.c	Tue Jul 19 22:29:35 2005 +0000
+++ b/pathfind.c	Wed Jul 20 09:17:20 2005 +0000
@@ -664,11 +664,14 @@
 	FindLengthOfTunnelResult flotr;
 	int estimation;
 
+	
+
 	// Need to have a special case for the start.
 	// We shouldn't call the callback for the current tile.
 	si.cur_length = 1; // Need to start at 1 cause 0 is a reserved value.
 	si.depth = 0;
 	si.state = 0;
+	si.first_track = 0xFF;
 	goto start_at;
 
 	for(;;) {
@@ -690,7 +693,9 @@
 		if (tpf->enum_proc(tile, tpf->userdata, si.first_track, si.cur_length))
 			return;
 
+		assert(si.track <= 13);
 		direction = _tpf_new_direction[si.track];
+		assert(direction <= 3);
 
 start_at:
 		// If the tile is the entry tile of a tunnel, and we're not going out of the tunnel,
@@ -715,6 +720,7 @@
 		// a rail net and find the first intersection
 		tile_org = tile;
 		for(;;) {
+			assert(direction <= 3);
 			tile += TileOffsByDir(direction);
 
 			// too long search length? bail out.
@@ -812,7 +818,7 @@
 
 			// continue with the next track
 			direction = _tpf_new_direction[track];
-			assert(direction != 0xFF);
+			assert(direction <= 3);
 
 			// safety check if we're running around chasing our tail... (infinite loop)
 			if (tile == tile_org) {
@@ -850,7 +856,9 @@
 		si.depth++;
 		si.tile = tile;
 		do {
+			assert(direction <= 3);
 			si.track = _new_track[FIND_FIRST_BIT(bits)][direction];
+			assert(si.track <= 13);
 			si.priority = si.cur_length + estimation;
 
 			// out of stack items, bail out?