diff --git a/src/autoreplace.cpp b/src/autoreplace.cpp index 6d3c0f16b4..865266ecd4 100644 --- a/src/autoreplace.cpp +++ b/src/autoreplace.cpp @@ -109,13 +109,8 @@ CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, Engi if (!EngineRenew::CanAllocateItem()) return CMD_ERROR; if (flags.Test(DoCommandFlag::Execute)) { - er = new EngineRenew(old_engine, new_engine); - er->group_id = group; - er->replace_when_old = replace_when_old; - /* Insert before the first element */ - er->next = (EngineRenew *)(*erl); - *erl = (EngineRenewList)er; + *erl = new EngineRenew(old_engine, new_engine, group, replace_when_old, *erl); } return CommandCost(); diff --git a/src/autoreplace_base.h b/src/autoreplace_base.h index 16c041aac5..07fc1a6a70 100644 --- a/src/autoreplace_base.h +++ b/src/autoreplace_base.h @@ -31,13 +31,15 @@ extern EngineRenewPool _enginerenew_pool; * it. */ struct EngineRenew : EngineRenewPool::PoolItem<&_enginerenew_pool> { - EngineID from; - EngineID to; - EngineRenew *next; - GroupID group_id; - bool replace_when_old; ///< Do replacement only when vehicle is old. + EngineID from = EngineID::Invalid(); + EngineID to = EngineID::Invalid(); + EngineRenew *next = nullptr; + GroupID group_id = GroupID::Invalid(); + bool replace_when_old = false; ///< Do replacement only when vehicle is old. - EngineRenew(EngineID from = EngineID::Invalid(), EngineID to = EngineID::Invalid()) : from(from), to(to) {} + EngineRenew() {} + EngineRenew(EngineID from, EngineID to, GroupID group_id, bool replace_when_old, EngineRenew *next) : + from(from), to(to), next(next), group_id(group_id), replace_when_old(replace_when_old) {} ~EngineRenew() {} };