Changeset - r7385:a7ca8f67757d
[Not reviewed]
master
0 1 0
rubidium - 17 years ago 2007-08-02 21:02:57
rubidium@openttd.org
(svn r10754) -Fix: MorphOS does not like sizeof in the templated pool item class, so use the item size that is set in the pool.
1 file changed with 5 insertions and 5 deletions:
0 comments (0 inline, 0 general)
src/oldpool.h
Show inline comments
 
@@ -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 OldMemoryP
 
	{
 
		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;
 
			}
0 comments (0 inline, 0 general)