From a810fb8d0f530ca78778bcc1c3dd0bbc5e440040 Mon Sep 17 00:00:00 2001 From: rich_sposato Date: Thu, 13 Oct 2005 22:41:05 +0000 Subject: [PATCH] Moved emptyChunk_ assignment because code depends upon it. And added if statement before line where allocChunk_ is assigned. git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@296 7ec92016-0320-0410-acc4-a06ded1c099a --- src/SmallObj.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/SmallObj.cpp b/src/SmallObj.cpp index ee6757b..3581d3a 100644 --- a/src/SmallObj.cpp +++ b/src/SmallObj.cpp @@ -414,9 +414,7 @@ bool FixedAllocator::TrimEmptyChunk( void ) assert( lastChunk->HasAvailable( numBlocks_ ) ); lastChunk->Release(); chunks_.pop_back(); - emptyChunk_ = NULL; - assert( 0 == CountEmptyChunks() ); if ( chunks_.empty() ) { allocChunk_ = NULL; @@ -436,6 +434,9 @@ bool FixedAllocator::TrimEmptyChunk( void ) } } + emptyChunk_ = NULL; + assert( 0 == CountEmptyChunks() ); + return true; } @@ -622,7 +623,8 @@ void FixedAllocator::DoDeallocate(void* p) assert( lastChunk->HasAvailable( numBlocks_ ) ); lastChunk->Release(); chunks_.pop_back(); - allocChunk_ = deallocChunk_; + if ( allocChunk_->IsFilled() ) + allocChunk_ = deallocChunk_; } emptyChunk_ = deallocChunk_; } @@ -811,6 +813,10 @@ void SmallObjAllocator::Deallocate( void * p ) //////////////////////////////////////////////////////////////////////////////// // $Log$ +// Revision 1.8 2005/10/13 22:41:05 rich_sposato +// Moved emptyChunk_ assignment because code depends upon it. And added if +// statement before line where allocChunk_ is assigned. +// // Revision 1.7 2005/09/27 00:40:30 rich_sposato // Moved Chunk out of FixedAllocator class so I could improve efficiency for // SmallObjAllocator::Deallocate.