diff --git a/src/cargopacket.cpp b/src/cargopacket.cpp index e43034bcb2..06845dac4d 100644 --- a/src/cargopacket.cpp +++ b/src/cargopacket.cpp @@ -292,6 +292,17 @@ void CargoPacket::PayDeferredPayments() } } +/* static */ bool CargoPacket::ValidateDeferredCargoPayments() +{ + for (auto &it : _cargo_packet_deferred_payments) { + uint id = it.first >> 32; + const CargoPacket *cp = CargoPacket::GetIfValid(id); + if (!cp) return false; + if (!(cp->flags & CPF_HAS_DEFERRED_PAYMENT)) return false; + } + return true; +} + /* * * Cargo list implementation diff --git a/src/cargopacket.h b/src/cargopacket.h index 5217235464..0f034b859e 100644 --- a/src/cargopacket.h +++ b/src/cargopacket.h @@ -204,6 +204,7 @@ public: static void InvalidateAllFrom(SourceType src_type, SourceID src); static void InvalidateAllFrom(StationID sid); static void AfterLoad(); + static bool ValidateDeferredCargoPayments(); }; /** diff --git a/src/openttd.cpp b/src/openttd.cpp index 06953abde2..e76ca6c6e3 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -75,6 +75,7 @@ #include "tbtr_template_vehicle.h" #include "string_func_extra.h" #include "industry.h" +#include "cargopacket.h" #include "linkgraph/linkgraphschedule.h" #include "tracerestrict.h" @@ -1608,6 +1609,8 @@ void CheckCaches(bool force_check, std::function log) if (!TraceRestrictSlot::ValidateVehicleIndex()) CCLOG("Trace restrict slot vehicle index validation failed"); TraceRestrictSlot::ValidateSlotOccupants(log); + if (!CargoPacket::ValidateDeferredCargoPayments()) CCLOG("Cargo packets deferred payments validation failed"); + #undef CCLOG }