diff options
| author | donkopunchstania <donkopunchstania@gmail.com> | 2010-02-16 04:34:41 +0000 |
|---|---|---|
| committer | donkopunchstania <donkopunchstania@gmail.com> | 2010-02-16 04:34:41 +0000 |
| commit | 9254a2ddb593542f224342d9ff9fd9a072b5cc44 (patch) | |
| tree | 7cd5417d34f75632cd2e342da5d2017650a4d070 /Source/Core/Common | |
| parent | 666a33eeedcc3fbfa2ae035ea3afa48c84fe3274 (diff) | |
Fixed a few memory leaks. Made Init and Shutdown functions for some core systems.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@5064 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/Common')
| -rw-r--r-- | Source/Core/Common/Src/CDUtils.cpp | 1 | ||||
| -rw-r--r-- | Source/Core/Common/Src/LogManager.cpp | 22 | ||||
| -rw-r--r-- | Source/Core/Common/Src/LogManager.h | 5 |
3 files changed, 23 insertions, 5 deletions
diff --git a/Source/Core/Common/Src/CDUtils.cpp b/Source/Core/Common/Src/CDUtils.cpp index f1d7b9bcd4..8339ea85e1 100644 --- a/Source/Core/Common/Src/CDUtils.cpp +++ b/Source/Core/Common/Src/CDUtils.cpp @@ -139,6 +139,7 @@ char ** cdio_get_devices_win32() { const char *drive_str=is_cdrom_win32(drive_letter); if (drive_str != NULL) { cdio_add_device_list(&drives, drive_str, &num_drives); + delete drive_str; } } cdio_add_device_list(&drives, NULL, &num_drives); diff --git a/Source/Core/Common/Src/LogManager.cpp b/Source/Core/Common/Src/LogManager.cpp index 764f761c05..e613f2763d 100644 --- a/Source/Core/Common/Src/LogManager.cpp +++ b/Source/Core/Common/Src/LogManager.cpp @@ -26,7 +26,8 @@ void GenericLog(LogTypes::LOG_LEVELS level, LogTypes::LOG_TYPE type, { va_list args; va_start(args, fmt); - LogManager::GetInstance()->Log(level, type, file, line, fmt, args); + if (LogManager::GetInstance()) + LogManager::GetInstance()->Log(level, type, file, line, fmt, args); va_end(args); } @@ -91,11 +92,14 @@ LogManager::LogManager() { } LogManager::~LogManager() { - delete [] &m_Log; // iffy :P for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) { m_logManager->removeListener((LogTypes::LOG_TYPE)i, m_fileLog); m_logManager->removeListener((LogTypes::LOG_TYPE)i, m_consoleLog); } + + for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i) + delete m_Log[i]; + delete m_fileLog; delete m_consoleLog; delete logMutex; @@ -131,6 +135,17 @@ void LogManager::removeListener(LogTypes::LOG_TYPE type, LogListener *listener) logMutex->Leave(); } +void LogManager::Init() +{ + m_logManager = new LogManager(); +} + +void LogManager::Shutdown() +{ + delete m_logManager; + m_logManager = NULL; +} + LogContainer::LogContainer(const char* shortName, const char* fullName, bool enable) : m_enable(enable) { strncpy(m_fullName, fullName, 128); @@ -183,7 +198,8 @@ void FileLogListener::Reload() { FileLogListener::~FileLogListener() { free(m_filename); - fclose(m_logfile); + if (m_logfile) + fclose(m_logfile); } void FileLogListener::Log(LogTypes::LOG_LEVELS, const char *msg) { diff --git a/Source/Core/Common/Src/LogManager.h b/Source/Core/Common/Src/LogManager.h index 07f92640fd..a0aecb583e 100644 --- a/Source/Core/Common/Src/LogManager.h +++ b/Source/Core/Common/Src/LogManager.h @@ -165,14 +165,15 @@ public: } static LogManager* GetInstance() { - if (! m_logManager) - m_logManager = new LogManager(); return m_logManager; } static void SetInstance(LogManager *logManager) { m_logManager = logManager; } + + static void Init(); + static void Shutdown(); }; #endif // _LOGMANAGER_H_ |
