(svn r2647) Fix: [ntp] Fix assertion error introduced in r2635
authorludde
Wed, 20 Jul 2005 09:31:46 +0000
changeset 2137 0e686b34c3a9
parent 2136 2c9fda706e52
child 2138 20c2cf0fb452
(svn r2647) Fix: [ntp] Fix assertion error introduced in r2635
pathfind.c
--- a/pathfind.c	Wed Jul 20 09:17:20 2005 +0000
+++ b/pathfind.c	Wed Jul 20 09:31:46 2005 +0000
@@ -695,7 +695,6 @@
 
 		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,
@@ -754,19 +753,19 @@
 			}
 
 			// Regular rail tile, determine which tracks exist.
-			bits = _m[tile].m5 & 0x3F;
-			if (bits == 0)
-				break; // None at all?
+			bits = _m[tile].m5 & _bits_mask[direction];
 
-			// Make sure that the tile contains exactly ONE track
-			if (KILL_FIRST_BIT(bits) != 0) {
-				// It contained many tracks,
-				// but first, mask out the tracks that are not reachable
-				bits &= _bits_mask[direction];
+			// The tile has no reachable tracks, or
+			// does the tile contain more than one track?
+			if (bits == 0 || KILL_FIRST_BIT(_m[tile].m5 & 0x3F) != 0)
 				break;
-			}
+
+			// If we reach here, the tile has exactly one track, and this
+			// track is reachable.
 
 			track = _new_track[FIND_FIRST_BIT(bits)][direction];
+			assert(track != 0xff);
+
 			si.cur_length += _length_of_track[track];
 
 			// Check if this rail is an upwards slope. If it is, then add a penalty.
@@ -818,7 +817,6 @@
 
 			// continue with the next track
 			direction = _tpf_new_direction[track];
-			assert(direction <= 3);
 
 			// safety check if we're running around chasing our tail... (infinite loop)
 			if (tile == tile_org) {
@@ -856,9 +854,7 @@
 		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?