FilenameDB::GetFileSet: don't deallocate and reallocate on each expiration

This commit is contained in:
Glenn Maynard
2003-12-15 03:07:31 +00:00
parent d410dbdfdb
commit a311303c33
+14 -9
View File
@@ -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;
}