Check order indexing and consistency in cache check
This commit is contained in:
@@ -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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -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
|
||||||
|
@@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user