From 1c05e50d0a9809a738050248b51649e6d35698be Mon Sep 17 00:00:00 2001
From: Erwan Tulou <erwan10@videolan.org>
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 <jb@videolan.org>
---
 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<playlist_add_t*>(newVal.p_address);
 
     CmdGenericPtr ptrTree;
     CmdPlaytreeAppend *pCmdTree = new CmdPlaytreeAppend( pThis->getIntf(),
-- 
2.25.4