From 08ee76e5ea83d86b66b45c341773d38483d7c357 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 2 Apr 2018 15:10:06 -0300 Subject: [PATCH] Fix a couple memory leaks --- src/RageSurface_Load_XPM.cpp | 6 +++++- src/arch/LoadingWindow/LoadingWindow.cpp | 27 +++++++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/RageSurface_Load_XPM.cpp b/src/RageSurface_Load_XPM.cpp index f6e584fb3c..2b85e7da8d 100644 --- a/src/RageSurface_Load_XPM.cpp +++ b/src/RageSurface_Load_XPM.cpp @@ -77,7 +77,11 @@ RageSurface *RageSurface_Load_XPM( char * const *xpm, RString &error ) for( int y = 0; y < height; ++y ) { - CheckLine(); + if (xpm[line] == NULL) { + error = "short file"; + delete img; + return NULL; + } const RString row = xpm[line++]; if( (int) row.size() != width*color_length ) { diff --git a/src/arch/LoadingWindow/LoadingWindow.cpp b/src/arch/LoadingWindow/LoadingWindow.cpp index 1c75ec774d..37a36e4f94 100644 --- a/src/arch/LoadingWindow/LoadingWindow.cpp +++ b/src/arch/LoadingWindow/LoadingWindow.cpp @@ -21,20 +21,37 @@ LoadingWindow *LoadingWindow::Create() RString Driver; LoadingWindow *ret = NULL; - for( unsigned i = 0; ret == NULL && i < DriversToTry.size(); ++i ) + for (unsigned i = 0; ret == NULL && i < DriversToTry.size(); ++i) { Driver = DriversToTry[i]; #ifdef USE_LOADING_WINDOW_MACOSX - if( !DriversToTry[i].CompareNoCase("MacOSX") ) ret = new LoadingWindow_MacOSX; + if (!DriversToTry[i].CompareNoCase("MacOSX")) { + if (ret != nullptr) + delete ret; + ret = new LoadingWindow_MacOSX; + } #endif #ifdef USE_LOADING_WINDOW_GTK - if( !DriversToTry[i].CompareNoCase("Gtk") ) ret = new LoadingWindow_Gtk; + if (!DriversToTry[i].CompareNoCase("Gtk")) { + if (ret != nullptr) + delete ret; + ret = new LoadingWindow_Gtk; + } #endif #ifdef USE_LOADING_WINDOW_WIN32 - if( !DriversToTry[i].CompareNoCase("Win32") ) ret = new LoadingWindow_Win32; + if (!DriversToTry[i].CompareNoCase("Win32")) { + if (ret != nullptr) + delete ret; + ret = new LoadingWindow_Win32; + } + #endif - if( !DriversToTry[i].CompareNoCase("Null") ) ret = new LoadingWindow_Null; + if( !DriversToTry[i].CompareNoCase("Null") ) { + if (ret != nullptr) + delete ret; + ret = new LoadingWindow_Null; + } if( ret == NULL ) continue;