From b7aac40da865c18dc6c699db5747e9d11dd597a6 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Fri, 10 Jun 2016 00:05:24 +0100 Subject: [PATCH] Fix deleting an in-use template vehicle, only updating the first group. --- src/tbtr_template_vehicle.cpp | 11 ----------- src/tbtr_template_vehicle.h | 1 - src/train_cmd.cpp | 3 +++ src/vehicle_cmd.cpp | 10 ++++++---- 4 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/tbtr_template_vehicle.cpp b/src/tbtr_template_vehicle.cpp index 1a87266f0d..001d36f8ad 100644 --- a/src/tbtr_template_vehicle.cpp +++ b/src/tbtr_template_vehicle.cpp @@ -149,17 +149,6 @@ TemplateReplacement* GetTemplateReplacementByGroupID(GroupID gid) return NULL; } -TemplateReplacement* GetTemplateReplacementByTemplateID(TemplateID tid) -{ - TemplateReplacement *tr; - FOR_ALL_TEMPLATE_REPLACEMENTS(tr) { - if (tr->Template() == tid) { - return tr; - } - } - return NULL; -} - bool IssueTemplateReplacement(GroupID gid, TemplateID tid) { TemplateReplacement *tr = GetTemplateReplacementByGroupID(gid); diff --git a/src/tbtr_template_vehicle.h b/src/tbtr_template_vehicle.h index e4331a1f5a..82a655a676 100644 --- a/src/tbtr_template_vehicle.h +++ b/src/tbtr_template_vehicle.h @@ -199,7 +199,6 @@ struct TemplateReplacement : TemplateReplacementPool::PoolItem<&_template_replac }; TemplateReplacement* GetTemplateReplacementByGroupID(GroupID); -TemplateReplacement* GetTemplateReplacementByTemplateID(TemplateID); bool IssueTemplateReplacement(GroupID, TemplateID); short deleteIllegalTemplateReplacements(GroupID); diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index eeafb441db..b09e292cd1 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -4280,6 +4280,9 @@ CommandCost CmdTemplateReplaceVehicle(TileIndex tile, DoCommandFlag flags, uint3 Train *remainder_chain = NULL; Train *tmp_chain = NULL; TemplateVehicle *tv = GetTemplateVehicleByGroupID(incoming->group_id); + if (tv == NULL) { + return CMD_ERROR; + } EngineID eid = tv->engine_type; CommandCost buy(EXPENSES_NEW_VEHICLES); diff --git a/src/vehicle_cmd.cpp b/src/vehicle_cmd.cpp index 668e2316b7..c430c24ff1 100644 --- a/src/vehicle_cmd.cpp +++ b/src/vehicle_cmd.cpp @@ -1183,10 +1183,12 @@ CommandCost CmdDeleteTemplateVehicle(TileIndex tile, DoCommandFlag flags, uint32 bool should_execute = (flags & DC_EXEC) != 0; if (should_execute) { - // Remove a corresponding template replacement if existing - TemplateReplacement *tr = GetTemplateReplacementByTemplateID(del->index); - if (tr != NULL) { - delete tr; + // Remove corresponding template replacements if existing + TemplateReplacement *tr; + FOR_ALL_TEMPLATE_REPLACEMENTS(tr) { + if (tr->Template() == del->index) { + delete tr; + } } delete del;