Check order indexing and consistency in cache check

This commit is contained in:
Jonathan G Rennison
2019-05-02 03:05:07 +01:00
parent 51579be197
commit 0e5dfa42c3
3 changed files with 17 additions and 0 deletions

View File

@@ -1489,6 +1489,11 @@ void CheckCaches(bool force_check)
assert(memcmp(&st->goods[c].cargo, buff, sizeof(StationCargoList)) == 0); assert(memcmp(&st->goods[c].cargo, buff, sizeof(StationCargoList)) == 0);
} }
} }
OrderList *order_list;
FOR_ALL_ORDER_LISTS(order_list) {
order_list->DebugCheckSanity();
}
} }
/** /**

View File

@@ -701,6 +701,7 @@ public:
void FreeChain(bool keep_orderlist = false); void FreeChain(bool keep_orderlist = false);
void DebugCheckSanity() const; void DebugCheckSanity() const;
bool CheckOrderListIndexing() const;
/** /**
* Get the vector of all scheduled dispatch slot * Get the vector of all scheduled dispatch slot

View File

@@ -371,6 +371,16 @@ void OrderList::ReindexOrderList()
} }
} }
bool OrderList::CheckOrderListIndexing() const
{
uint idx = 0;
for (Order *o = this->first; o != nullptr; o = o->next, idx++) {
if (idx >= this->order_index.size()) return false;
if (this->order_index[idx] != o) return false;
}
return idx == this->order_index.size();
}
/** /**
* Recomputes everything. * Recomputes everything.
* @param chain first order in the chain * @param chain first order in the chain
@@ -778,6 +788,7 @@ void OrderList::DebugCheckSanity() const
DEBUG(misc, 6, "... detected %u orders (%u manual), %u vehicles, %i timetabled, %i total", DEBUG(misc, 6, "... detected %u orders (%u manual), %u vehicles, %i timetabled, %i total",
(uint)this->GetNumOrders(), (uint)this->num_manual_orders, (uint)this->GetNumOrders(), (uint)this->num_manual_orders,
this->num_vehicles, this->timetable_duration, this->total_duration); this->num_vehicles, this->timetable_duration, this->total_duration);
assert(this->CheckOrderListIndexing());
} }
/** /**