Fix DeleteVisibleTrain being called on virtual trains
Add assertion to check for this case
This commit is contained in:
@@ -407,7 +407,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
if (v->owner == old_owner && IsCompanyBuildableVehicleType(v->type)) {
|
||||
if (new_owner == INVALID_OWNER) {
|
||||
if (v->Previous() == NULL) {
|
||||
if (_settings_game.economy.infrastructure_sharing[VEH_TRAIN] && v->type == VEH_TRAIN && Train::From(v)->IsFrontEngine()) {
|
||||
if (_settings_game.economy.infrastructure_sharing[VEH_TRAIN] && v->type == VEH_TRAIN && Train::From(v)->IsFrontEngine() && !Train::From(v)->IsVirtual()) {
|
||||
DeleteVisibleTrain(Train::From(v));
|
||||
} else {
|
||||
delete v;
|
||||
|
@@ -175,7 +175,7 @@ static void RemoveAndSellVehicle(Vehicle *v, bool give_money)
|
||||
}
|
||||
|
||||
/* take special measures for trains, but not when sharing is disabled or when the train is a free wagon chain */
|
||||
if (_settings_game.economy.infrastructure_sharing[VEH_TRAIN] && v->type == VEH_TRAIN && Train::From(v)->IsFrontEngine()) {
|
||||
if (_settings_game.economy.infrastructure_sharing[VEH_TRAIN] && v->type == VEH_TRAIN && Train::From(v)->IsFrontEngine() && !Train::From(v)->IsVirtual()) {
|
||||
DeleteVisibleTrain(Train::From(v));
|
||||
} else {
|
||||
delete v;
|
||||
|
@@ -4754,6 +4754,8 @@ void DeleteVisibleTrain(Train *v)
|
||||
{
|
||||
SCOPE_INFO_FMT([v], "DeleteVisibleTrain: %s", scope_dumper().VehicleInfo(v));
|
||||
|
||||
assert(!v->IsVirtual());
|
||||
|
||||
FreeTrainTrackReservation(v);
|
||||
TileIndex crossing = TrainApproachingCrossingTile(v);
|
||||
|
||||
|
Reference in New Issue
Block a user