diff options
author | Darkvater <Darkvater@openttd.org> | 2005-04-16 20:10:24 +0000 |
---|---|---|
committer | Darkvater <Darkvater@openttd.org> | 2005-04-16 20:10:24 +0000 |
commit | 4e580d2ade8317c0e587c8b126ed7fc683851e8a (patch) | |
tree | d2fe7e17c73c519e549c66aa4fe9db5d6b880124 | |
parent | dc193d2f004df6d35525f22b18cf63c69c045618 (diff) | |
download | openttd-4e580d2ade8317c0e587c8b126ed7fc683851e8a.tar.xz |
(svn r2210) - Fix: When a road-station is deleted, also delete the assigned slots of all vehicles headed to that station. This fixes an assertion, thanks go to Tron for finding the cause.
-rw-r--r-- | station_cmd.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/station_cmd.c b/station_cmd.c index aac4b928a..8cecba027 100644 --- a/station_cmd.c +++ b/station_cmd.c @@ -1560,8 +1560,17 @@ static int32 RemoveRoadStop(Station *st, uint32 flags, TileIndex tile) return CMD_ERROR; if (flags & DC_EXEC) { + int i; DoClearSquare(tile); + /* Clear all vehicles destined for this station */ + for (i = 0; i != NUM_SLOTS; i++) { + if (cur_stop->slot[i] != INVALID_SLOT) { + Vehicle *v = GetVehicle(cur_stop->slot[i]); + ClearSlot(v, v->u.road.slot); + } + } + cur_stop->used = false; if (cur_stop->prev != NULL) //alter previous stop cur_stop->prev->next = cur_stop->next; |