]> git.sesse.net Git - vlc/commitdiff
- fix input memleak
authorRémi Denis-Courmont <rem@videolan.org>
Sun, 3 Dec 2006 14:23:40 +0000 (14:23 +0000)
committerRémi Denis-Courmont <rem@videolan.org>
Sun, 3 Dec 2006 14:23:40 +0000 (14:23 +0000)
- move vlm to input/
- remove unused libvlc export

src/Makefile.am
src/input/input.c
src/input/input_internal.h
src/input/vlm.c [moved from src/misc/vlm.c with 99% similarity]
src/misc/modules.c

index e2bcc47390b36788c9a462608ef2e4f00ca1040e..80967ce59f643c4272faa6d9e829f395c79d0120 100644 (file)
@@ -322,7 +322,7 @@ SOURCES_libvlc_common = \
        misc/variables.c \
        misc/error.c \
        misc/update.c \
-       misc/vlm.c \
+       input/vlm.c \
        misc/xml.c \
        misc/dict.c \
        misc/devices.c \
index 25677995c79895ff77620552ca3180fe23e949c7..8e327b51a65ac29aaf8a9b5cc1cd6e29cd1edeab 100644 (file)
@@ -51,8 +51,8 @@
 static  int Run  ( input_thread_t *p_input );
 static  int RunAndClean  ( input_thread_t *p_input );
 
-static input_thread_t * Create  ( vlc_object_t *, input_item_t *, char *,
-                                  vlc_bool_t );
+static input_thread_t * Create  ( vlc_object_t *, input_item_t *,
+                                  const char *, vlc_bool_t );
 static  int             Init    ( input_thread_t *p_input );
 static void             Error   ( input_thread_t *p_input );
 static void             End     ( input_thread_t *p_input );
@@ -105,7 +105,7 @@ static void InputMetaUser( input_thread_t *p_input );
  * TODO complete this list (?)
  *****************************************************************************/
 static input_thread_t *Create( vlc_object_t *p_parent, input_item_t *p_item,
-                               char *psz_header, vlc_bool_t b_quick )
+                               const char *psz_header, vlc_bool_t b_quick )
 {
     input_thread_t *p_input = NULL;                 /* thread descriptor */
     vlc_value_t val;
@@ -272,7 +272,7 @@ input_thread_t *__input_CreateThread( vlc_object_t *p_parent,
 /* Gruik ! */
 input_thread_t *__input_CreateThread2( vlc_object_t *p_parent,
                                        input_item_t *p_item,
-                                       char *psz_header )
+                                       const char *psz_header )
 {
     input_thread_t *p_input = NULL;      /* thread descriptor */
 
@@ -290,6 +290,7 @@ input_thread_t *__input_CreateThread2( vlc_object_t *p_parent,
         input_ChangeState( p_input, ERROR_S );
         msg_Err( p_input, "cannot create input thread" );
         vlc_object_detach( p_input );
+        free( p_input->p );
         vlc_object_destroy( p_input );
         return NULL;
     }
@@ -331,6 +332,7 @@ int __input_Read( vlc_object_t *p_parent, input_item_t *p_item,
             input_ChangeState( p_input, ERROR_S );
             msg_Err( p_input, "cannot create input thread" );
             vlc_object_detach( p_input );
+           free( p_input->p );
             vlc_object_destroy( p_input );
             return VLC_EGENERIC;
         }
@@ -370,6 +372,7 @@ int __input_Preparse( vlc_object_t *p_parent, input_item_t *p_item )
     if( p_input->p->p_es_out ) input_EsOutDelete( p_input->p->p_es_out );
 
     vlc_object_detach( p_input );
+    free( p_input->p );
     vlc_object_destroy( p_input );
 
     return VLC_SUCCESS;
@@ -532,6 +535,7 @@ static int RunAndClean( input_thread_t *p_input )
 
     /* Release memory */
     vlc_object_detach( p_input );
+    free( p_input->p );
     vlc_object_destroy( p_input );
 
     return 0;
index b59df10bc5d7441f160147ccfe921d2f169c2365..77c416990696f18fd26a6b693920063563993a33 100644 (file)
@@ -224,6 +224,10 @@ int         input_DownloadAndCacheArt ( playlist_t *, input_item_t * );
  * Internal prototypes
  ***************************************************************************/
 
+/* input.c */
+#define input_CreateThread2(a,b,c) __input_CreateThread2(VLC_OBJECT(a),b,c)
+input_thread_t *__input_CreateThread2 ( vlc_object_t *, input_item_t *, const char * );
+
 /* var.c */
 void input_ControlVarInit ( input_thread_t * );
 void input_ControlVarClean( input_thread_t * );
similarity index 99%
rename from src/misc/vlm.c
rename to src/input/vlm.c
index 89300886f4113d54101a5f2b2a61f153d8729299..182319bbe27ca8a46cb8df14faa0e660a9a4b1af 100644 (file)
@@ -42,6 +42,7 @@
 #endif
 
 #include <vlc_input.h>
+#include "input_internal.h"
 #include <vlc_stream.h>
 #include <vlc_vlm.h>
 #include <vlc_vod.h>
index 11c06c112cc872351fe1ba83d7675cfc9623b61e..037029b81279c97e34d36302900d1b0f8cc3b18f 100644 (file)
@@ -1456,7 +1456,7 @@ static void CloseModule( module_handle_t handle )
     FreeLibrary( handle );
 
 #elif defined(HAVE_DL_DLOPEN)
-    dlclose( handle );
+    //dlclose( handle );
 
 #elif defined(HAVE_DL_SHL_LOAD)
     shl_unload( handle );