diff --git a/src/core/pool_type.hpp b/src/core/pool_type.hpp --- a/src/core/pool_type.hpp +++ b/src/core/pool_type.hpp @@ -32,7 +32,9 @@ struct Pool { size_t first_free; ///< No item with index lower than this is free (doesn't say anything about this one!) size_t first_unused; ///< This and all higher indexes are free (doesn't say anything about first_unused-1 !) size_t items; ///< Number of used indexes (non-NULL) - +#ifdef OTTD_ASSERT + size_t checked; ///< Number of items we checked for +#endif /* OTTD_ASSERT */ bool cleaning; ///< True if cleaning pool (deleting all items) Titem **data; ///< Pointer to array of pointers to Titem @@ -69,7 +71,11 @@ struct Pool { */ FORCEINLINE bool CanAllocate(size_t n = 1) { - return this->items <= Tmax_size - n; + bool ret = this->items <= Tmax_size - n; +#ifdef OTTD_ASSERT + this->checked = ret ? n : 0; +#endif /* OTTD_ASSERT */ + return ret; } /**