]> git.sesse.net Git - vlc/commitdiff
skins2: fix memory leak (a malloc not paired with a free)
authorErwan Tulou <erwan10@videolan.org>
Thu, 6 May 2010 13:42:03 +0000 (15:42 +0200)
committerErwan Tulou <erwan10@videolan.org>
Thu, 6 May 2010 19:04:50 +0000 (21:04 +0200)
modules/gui/skins2/commands/cmd_vars.hpp
modules/gui/skins2/src/vlcproc.cpp

index c6f926eadea3cdf9ba2a5e17a08a5e93e68eeca0..c4e83c4a266b5b551a0f6e5dec7a61f7fddaa80b 100644 (file)
@@ -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"; }
 
index bb95186822ce21d0768dbaff892e31127d90ffbc..208a56fc1972aa32e31bab6c407c14d4c2f5a4d2 100644 (file)
@@ -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(),