diff options
author | ludde <ludde@openttd.org> | 2005-07-20 09:17:20 +0000 |
---|---|---|
committer | ludde <ludde@openttd.org> | 2005-07-20 09:17:20 +0000 |
commit | b8b14ac6c812aec9377269a2c5a692e025898d09 (patch) | |
tree | eafab7e6ac94ea6ded7d63939a6f876b5ae4b86b | |
parent | 2379c59ab8e3a2bf022a3ed104fad81da3112298 (diff) | |
download | openttd-b8b14ac6c812aec9377269a2c5a692e025898d09.tar.xz |
(svn r2646) Change: [ntp] Fix uninitialized variable and add some more asserts to be able to debug an assert error.
-rw-r--r-- | pathfind.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/pathfind.c b/pathfind.c index 5290b86f1..18bff63bc 100644 --- a/pathfind.c +++ b/pathfind.c @@ -664,11 +664,14 @@ static void NTPEnum(NewTrackPathFinder *tpf, TileIndex tile, uint direction) 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 @@ callback_and_continue: 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 @@ start_at: // 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 @@ start_at: // 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 @@ start_at: 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? |