From a311303c33216f6df3c7d580961592ed1b77f9c7 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 15 Dec 2003 03:07:31 +0000 Subject: [PATCH] FilenameDB::GetFileSet: don't deallocate and reallocate on each expiration --- stepmania/src/RageUtil_FileDB.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/stepmania/src/RageUtil_FileDB.cpp b/stepmania/src/RageUtil_FileDB.cpp index 28c6d99842..789d09e289 100644 --- a/stepmania/src/RageUtil_FileDB.cpp +++ b/stepmania/src/RageUtil_FileDB.cpp @@ -222,19 +222,24 @@ FileSet &FilenameDB::GetFileSet( CString dir ) lower.MakeLower(); map::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; }