Fix: Don't produce invalid cargo. (#11314)

Production for secondary industries did not always check that the produced cargo type isn't valid.
This commit is contained in:
PeterN
2023-09-18 22:43:03 +01:00
committed by GitHub
parent fd2dd4397f
commit 18e75dbc88
3 changed files with 8 additions and 1 deletions

View File

@@ -643,9 +643,11 @@ void IndustryProductionCallback(Industry *ind, int reason)
if (group->version < 2) {
/* Callback parameters map directly to industry cargo slot indices */
for (uint i = 0; i < group->num_input; i++) {
if (!IsValidCargoID(ind->accepted[i].cargo)) continue;
ind->accepted[i].waiting = ClampTo<uint16_t>(ind->accepted[i].waiting - DerefIndProd(group->subtract_input[i], deref) * multiplier);
}
for (uint i = 0; i < group->num_output; i++) {
if (!IsValidCargoID(ind->produced[i].cargo)) continue;
ind->produced[i].waiting = ClampTo<uint16_t>(ind->produced[i].waiting + std::max(DerefIndProd(group->add_output[i], deref), 0) * multiplier);
}
} else {