src/train_cmd.cpp
changeset 8300 dfd530665621
parent 8283 bbe075d76da6
child 8302 ed068d41cf1e
--- a/src/train_cmd.cpp	Tue Jan 15 13:20:58 2008 +0000
+++ b/src/train_cmd.cpp	Tue Jan 15 15:00:01 2008 +0000
@@ -2168,7 +2168,7 @@
 
 		v->load_unload_time_rem = 0;
 
-		if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR)) {
+		if (UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner)) {
 			InvalidateWindowClasses(WC_TRAINS_LIST);
 			return true;
 		}
@@ -2187,7 +2187,7 @@
 	v->UpdateDeltaXY(v->direction);
 	v->cur_image = v->GetImage(v->direction);
 	VehiclePositionChanged(v);
-	UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR);
+	UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner);
 	UpdateTrainAcceleration(v);
 	InvalidateWindowData(WC_VEHICLE_DEPOT, v->tile);
 
@@ -2768,7 +2768,7 @@
 	if (IsTileType(tile, MP_RAILWAY) &&
 			GetRailTileType(tile) == RAIL_TILE_SIGNALS) {
 		uint i = FindFirstBit2x64(GetTrackBits(tile) * 0x101 & _reachable_tracks[dir]);
-		UpdateSignalsOnSegment(tile, _otherside_signal_directions[i]);
+		UpdateSignalsOnSegment(tile, _otherside_signal_directions[i], GetTileOwner(tile));
 	}
 }
 
@@ -3141,8 +3141,10 @@
 	/* 'v' shouldn't be accessed after it has been deleted */
 	TrackBits track = v->u.rail.track;
 	TileIndex tile = v->tile;
+	Owner owner = v->owner;
 
 	delete v;
+	v = NULL; // make sure nobody will won't try to read 'v' anymore
 
 	/* Check if the wagon was on a road/rail-crossing and disable it if no
 	 * others are on it */
@@ -3150,9 +3152,9 @@
 
 	/* Update signals */
 	if (IsTileType(tile, MP_TUNNELBRIDGE) || IsTileDepotType(tile, TRANSPORT_RAIL)) {
-		UpdateSignalsOnSegment(tile, INVALID_DIAGDIR);
+		UpdateSignalsOnSegment(tile, INVALID_DIAGDIR, owner);
 	} else {
-		SetSignalsOnBothDir(tile, (Track)(FIND_FIRST_BIT(track)));
+		SetSignalsOnBothDir(tile, (Track)(FIND_FIRST_BIT(track)), owner);
 	}
 }