FilenameDB::GetFileSet: don't deallocate and reallocate on each expiration
This commit is contained in:
@@ -222,19 +222,24 @@ FileSet &FilenameDB::GetFileSet( CString dir )
|
||||
lower.MakeLower();
|
||||
|
||||
map<CString, FileSet *>::iterator i = dirs.find( lower );
|
||||
if( ExpireSeconds != -1 && i != dirs.end() && i->second->age.PeekDeltaTime() >= ExpireSeconds )
|
||||
FileSet *ret;
|
||||
if( i != dirs.end() )
|
||||
{
|
||||
delete i->second;
|
||||
dirs.erase( i );
|
||||
i = dirs.end();
|
||||
if( ExpireSeconds != -1 && i->second->age.PeekDeltaTime() >= ExpireSeconds )
|
||||
{
|
||||
ret = i->second;
|
||||
ret->age.Touch();
|
||||
ret->files.clear();
|
||||
} else
|
||||
return *i->second;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = new FileSet;
|
||||
AddFileSet( dir, ret );
|
||||
}
|
||||
|
||||
if( i != dirs.end() )
|
||||
return *i->second;
|
||||
|
||||
FileSet *ret = new FileSet;
|
||||
PopulateFileSet( *ret, dir );
|
||||
AddFileSet( dir, ret );
|
||||
return *ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user