changeset 6886:56eae6975d57 draft

(svn r10129) -Fix (r10111): Test for x == INVALID_COORD instead of v->tile == INVALID_TILE to determine if a vehicle should be removed from the has.
author peter1138 <peter1138@openttd.org>
date Wed, 13 Jun 2007 07:14:42 +0000
parents a6af26c23318
children f9048d03454b
files src/vehicle.cpp
diffstat 1 files changed, 3 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/vehicle.cpp
+++ b/src/vehicle.cpp
@@ -456,12 +456,12 @@
 	return NULL;
 }
 
-static void UpdateNewVehiclePosHash(Vehicle *v)
+static void UpdateNewVehiclePosHash(Vehicle *v, bool remove)
 {
 	Vehicle **old_hash = v->old_new_hash;
 	Vehicle **new_hash;
 
-	if (v->tile == INVALID_TILE || v->tile == 0) {
+	if (remove) {
 		new_hash = NULL;
 	} else {
 		int x = GB(TileX(v->tile), HASH_RES, HASH_BITS);
@@ -503,7 +503,7 @@
 
 static void UpdateVehiclePosHash(Vehicle* v, int x, int y)
 {
-	UpdateNewVehiclePosHash(v);
+	UpdateNewVehiclePosHash(v, x == INVALID_COORD);
 
 	Vehicle **old_hash, **new_hash;
 	int old_x = v->left_coord;
@@ -687,7 +687,6 @@
 		InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 	}
 
-	v->tile = INVALID_TILE;
 	UpdateVehiclePosHash(v, INVALID_COORD, 0);
 	v->next_hash = NULL;
 	v->next_new_hash = NULL;