From e4ea02f177eea6ac7ae6bdaf76ab0c24e34e0f48 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 19 Jan 2007 06:39:43 +0000 Subject: [PATCH] fix repeated slow updates fix memory leak (apToDelete[i] was not actually being deleted) --- stepmania/src/SongManager.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/stepmania/src/SongManager.cpp b/stepmania/src/SongManager.cpp index da8ef37482..47ab1eb315 100644 --- a/stepmania/src/SongManager.cpp +++ b/stepmania/src/SongManager.cpp @@ -1611,10 +1611,22 @@ void SongManager::FreeAllLoadedFromProfile( ProfileSlot slot ) apToDelete.push_back( *c ); } - // XXX: this will update best, etc. every time; too slow + /* We don't use DeleteCourse here, so we don't UpdatePopular and UpdateShuffled + * repeatedly. */ for( unsigned i = 0; i < apToDelete.size(); ++i ) - this->DeleteCourse( apToDelete[i] ); + { + vector::iterator iter = find( m_pCourses.begin(), m_pCourses.end(), apToDelete[i] ); + ASSERT( iter != m_pCourses.end() ); + m_pCourses.erase( iter ); + delete apToDelete[i]; + } + /* Popular and Shuffled may refer to courses that we just freed. */ + UpdatePopular(); + UpdateShuffled(); + RefreshCourseGroupInfo(); + + /* Free profile steps. */ FOREACH( Song*, m_pSongs, s ) (*s)->FreeAllLoadedFromProfile( slot );