From 1c05e50d0a9809a738050248b51649e6d35698be Mon Sep 17 00:00:00 2001 From: Erwan Tulou Date: Thu, 6 May 2010 15:42:03 +0200 Subject: [PATCH] skins2: fix memory leak (a malloc not paired with a free) (cherry picked from commit 4337a2d9b9e125f0619e1e7ffc390ce161d76284) Signed-off-by: Jean-Baptiste Kempf --- modules/gui/skins2/commands/cmd_vars.hpp | 14 ++++++++++++-- modules/gui/skins2/src/vlcproc.cpp | 5 +---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/gui/skins2/commands/cmd_vars.hpp b/modules/gui/skins2/commands/cmd_vars.hpp index c6f926eade..c4e83c4a26 100644 --- a/modules/gui/skins2/commands/cmd_vars.hpp +++ b/modules/gui/skins2/commands/cmd_vars.hpp @@ -71,8 +71,18 @@ class CmdPlaytreeAppend: public CmdGeneric { public: CmdPlaytreeAppend( intf_thread_t *pIntf, playlist_add_t *p_add ): - CmdGeneric( pIntf ), m_pAdd( p_add ) { } - virtual ~CmdPlaytreeAppend() { } + CmdGeneric( pIntf ), m_pAdd( NULL ) + { + if( p_add ) + { + m_pAdd = new playlist_add_t; + *m_pAdd = *p_add; + } + } + virtual ~CmdPlaytreeAppend() + { + delete m_pAdd; + } virtual void execute(); virtual string getType() const { return "playtree append"; } diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp index bb95186822..208a56fc19 100644 --- a/modules/gui/skins2/src/vlcproc.cpp +++ b/modules/gui/skins2/src/vlcproc.cpp @@ -287,10 +287,7 @@ int VlcProc::onItemAppend( vlc_object_t *pObj, const char *pVariable, { VlcProc *pThis = (VlcProc*)pParam; - playlist_add_t *p_add = (playlist_add_t*)malloc( sizeof( - playlist_add_t ) ) ; - - memcpy( p_add, newVal.p_address, sizeof( playlist_add_t ) ) ; + playlist_add_t *p_add = static_cast(newVal.p_address); CmdGenericPtr ptrTree; CmdPlaytreeAppend *pCmdTree = new CmdPlaytreeAppend( pThis->getIntf(), -- 2.11.4.GIT