From 7c8c88f6a5306ffd385384491419b2cb72ab6305 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sun, 3 Dec 2006 14:23:40 +0000 Subject: [PATCH] - fix input memleak - move vlm to input/ - remove unused libvlc export --- src/Makefile.am | 2 +- src/input/input.c | 12 ++++++++---- src/input/input_internal.h | 4 ++++ src/{misc => input}/vlm.c | 1 + src/misc/modules.c | 2 +- 5 files changed, 15 insertions(+), 6 deletions(-) rename src/{misc => input}/vlm.c (99%) diff --git a/src/Makefile.am b/src/Makefile.am index e2bcc47390..80967ce59f 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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 \ diff --git a/src/input/input.c b/src/input/input.c index 25677995c7..8e327b51a6 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -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; diff --git a/src/input/input_internal.h b/src/input/input_internal.h index b59df10bc5..77c4169906 100644 --- a/src/input/input_internal.h +++ b/src/input/input_internal.h @@ -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 * ); diff --git a/src/misc/vlm.c b/src/input/vlm.c similarity index 99% rename from src/misc/vlm.c rename to src/input/vlm.c index 89300886f4..182319bbe2 100644 --- a/src/misc/vlm.c +++ b/src/input/vlm.c @@ -42,6 +42,7 @@ #endif #include +#include "input_internal.h" #include #include #include diff --git a/src/misc/modules.c b/src/misc/modules.c index 11c06c112c..037029b812 100644 --- a/src/misc/modules.c +++ b/src/misc/modules.c @@ -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 );