summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/oldpool_func.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/oldpool_func.h b/src/oldpool_func.h
index fc08bf9ee..3fbed16a7 100644
--- a/src/oldpool_func.h
+++ b/src/oldpool_func.h
@@ -44,6 +44,7 @@ template<typename T, typename Tid, OldMemoryPool<T> *Tpool> T *PoolItem<T, Tid,
template<typename T, typename Tid, OldMemoryPool<T> *Tpool> bool PoolItem<T, Tid, Tpool>::CanAllocateItem(uint count)
{
uint last_minus_one = Tpool->GetSize() - 1;
+ uint orig_count = count;
for (T *t = Tpool->Get(Tpool->first_free_index); count > 0 && t != NULL; t = ((uint)t->index < last_minus_one) ? Tpool->Get(t->index + 1U) : NULL) {
if (!t->IsValid()) count--;
@@ -52,7 +53,7 @@ template<typename T, typename Tid, OldMemoryPool<T> *Tpool> bool PoolItem<T, Tid
if (count == 0) return true;
/* Check if we can add a block to the pool */
- if (Tpool->AddBlockToPool()) return CanAllocateItem(count);
+ if (Tpool->AddBlockToPool()) return CanAllocateItem(orig_count);
return false;
}