diff --git a/src/oldpool.h b/src/oldpool.h index 6157dddede..4c1b757bf2 100644 --- a/src/oldpool.h +++ b/src/oldpool.h @@ -23,15 +23,14 @@ struct OldMemoryPoolBase { protected: OldMemoryPoolBase(const char *name, uint max_blocks, uint block_size_bits, uint item_size, OldMemoryPoolNewBlock *new_block_proc, OldMemoryPoolCleanBlock *clean_block_proc) : - name(name), max_blocks(max_blocks), block_size_bits(block_size_bits), item_size(item_size), + name(name), max_blocks(max_blocks), block_size_bits(block_size_bits), new_block_proc(new_block_proc), clean_block_proc(clean_block_proc), current_blocks(0), - total_items(0), blocks(NULL) {} + total_items(0), item_size(item_size), first_free_index(0), blocks(NULL) {} const char* name; ///< Name of the pool (just for debugging) const uint max_blocks; ///< The max amount of blocks this pool can have const uint block_size_bits; ///< The size of each block in bits - const uint item_size; ///< How many bytes one block is /// Pointer to a function that is called after a new block is added OldMemoryPoolNewBlock *new_block_proc; @@ -42,6 +41,7 @@ protected: uint total_items; ///< How many items we now have in this pool public: + const uint item_size; ///< How many bytes one block is uint first_free_index; ///< The index of the first free pool item in this pool byte **blocks; ///< An array of blocks (one block hold all the items) @@ -102,7 +102,7 @@ struct OldMemoryPool : public OldMemoryPoolBase { { assert(index < this->GetSize()); return (T*)(this->blocks[index >> this->block_size_bits] + - (index & ((1 << this->block_size_bits) - 1)) * sizeof(T)); + (index & ((1 << this->block_size_bits) - 1)) * this->item_size); } }; @@ -266,7 +266,7 @@ private: Tpool->first_free_index = t->index; Tid index = t->index; - memset(t, 0, sizeof(T)); + memset(t, 0, Tpool->item_size); t->index = index; return t; }