From 017fb4b08929c71fdbcdd42360c336cf03505100 Mon Sep 17 00:00:00 2001 From: Michael Gregorius Date: Thu, 27 Jul 2017 19:07:19 +0200 Subject: [PATCH] Fix a memory leak in Song (dynamically allocated error list) Make the member Song::m_errors a static member to prevent memory leaks. The member was allocated dynamically when an instance of a Song was created but was not deleted in the destructor. --- include/Song.h | 2 +- src/core/Song.cpp | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/include/Song.h b/include/Song.h index 5b6e6899b..bd1215883 100644 --- a/include/Song.h +++ b/include/Song.h @@ -367,7 +367,7 @@ private: bool m_loadingProject; - QList * m_errors; + QList m_errors; PlayModes m_playMode; PlayPos m_playPos[Mode_Count]; diff --git a/src/core/Song.cpp b/src/core/Song.cpp index 782845399..0efe7b5bb 100644 --- a/src/core/Song.cpp +++ b/src/core/Song.cpp @@ -86,7 +86,6 @@ Song::Song() : m_playing( false ), m_paused( false ), m_loadingProject( false ), - m_errors( new QList() ), m_playMode( Mode_None ), m_length( 0 ), m_patternToPlay( NULL ), @@ -1506,21 +1505,21 @@ void Song::removeController( Controller * controller ) void Song::clearErrors() { - m_errors->clear(); + m_errors.clear(); } void Song::collectError( const QString error ) { - m_errors->append( error ); + m_errors.append( error ); } bool Song::hasErrors() { - return ( m_errors->length() > 0 ); + return !m_errors.empty(); } @@ -1529,9 +1528,9 @@ QString* Song::errorSummary() { QString* errors = new QString(); - for ( int i = 0 ; i < m_errors->length() ; i++ ) + for ( int i = 0 ; i < m_errors.length() ; i++ ) { - errors->append( m_errors->value( i ) + "\n" ); + errors->append( m_errors.value( i ) + "\n" ); } errors->prepend( "\n\n" );