int i_object_id; \
int i_object_type; \
const char *psz_object_type; \
- const char *psz_object_name; \
+ char *psz_object_name; \
\
/* Messages header */ \
char *psz_header; \
VLC_OBJECT_GENERIC );
if( p_fontbuilder )
{
- p_fontbuilder->psz_object_name = "fontlist builder";
+ p_fontbuilder->psz_object_name = strdup( "fontlist builder" );
vlc_object_attach( p_fontbuilder, p_filter->p_libvlc );
var_Create( p_fontbuilder, "build-done", VLC_VAR_BOOL );
p_libvlc->p_playlist = NULL;
p_libvlc->p_interaction = NULL;
p_libvlc->p_vlm = NULL;
- p_libvlc->psz_object_name = "libvlc";
+ p_libvlc->psz_object_name = strdup( "libvlc" );
/* Initialize message queue */
msg_Create( p_libvlc );
/* Get the executable name (similar to the basename command) */
if( i_argc > 0 )
{
- const char *exe = p_libvlc->psz_object_name = ppsz_argv[0];
+ const char *exe = strdup( ppsz_argv[0] );
+ const char *tmp = exe;
while( *exe )
{
if( *exe++ == '/' )
- p_libvlc->psz_object_name = exe;
+ tmp = exe;
}
+ p_libvlc->psz_object_name = strdup( tmp );
}
else
{
- p_libvlc->psz_object_name = "vlc";
+ p_libvlc->psz_object_name = strdup( "vlc" );
}
/*
vlc_mutex_destroy( &structure_lock );
}
+ FREENULL( p_this->psz_object_name );
+
#if defined(WIN32) || defined(UNDER_CE)
/* if object has an associated thread, close it now */
if( p_priv->thread_id.hThread )
return NULL;
module->b_reentrant = module->b_unloadable = true;
- module->psz_object_name = module->psz_longname = default_name;
+ module->psz_object_name = strdup( default_name );
+ module->psz_longname = default_name;
module->psz_capability = (char*)"";
module->i_score = 1;
module->i_config_items = module->i_bool_items = 0;
memcpy (submodule->pp_shortcuts, module->pp_shortcuts,
sizeof (submodule->pp_shortcuts));
- submodule->psz_object_name = module->psz_object_name;
+ submodule->psz_object_name = strdup( module->psz_object_name );
submodule->psz_shortname = module->psz_shortname;
submodule->psz_longname = module->psz_longname;
submodule->psz_capability = module->psz_capability;
break;
case VLC_MODULE_NAME:
- module->pp_shortcuts[0] = module->psz_object_name = (char *)value;
+ free( module->psz_object_name );
+ module->psz_object_name = strdup( (char *)value );
+ module->pp_shortcuts[0] = (char *)value;
if (module->psz_longname == default_name)
module->psz_longname = (char *)value;
break;
if( p_libvlc_global->p_module_bank == NULL )
{
p_bank = vlc_object_create( p_this, sizeof(module_bank_t) );
- p_bank->psz_object_name = "module bank";
+ p_bank->psz_object_name = strdup( "module bank" );
p_bank->i_usage = 1;
p_bank->i_cache = p_bank->i_loaded_cache = 0;
p_bank->pp_cache = p_bank->pp_loaded_cache = NULL;
/* We strdup() these entries so that they are still valid when the
* module is unloaded. */
- /* This one is a (const char *) that will never get freed. */
p_module->psz_object_name = strdup( p_module->psz_object_name );
p_module->psz_capability = strdup( p_module->psz_capability );
p_module->psz_shortname = p_module->psz_shortname ?
free( *pp_shortcut );
}
- free( p_module->psz_object_name );
+ FREENULL( p_module->psz_object_name );
free( p_module->psz_capability );
free( p_module->psz_shortname );
free( p_module->psz_longname );
// Preparse
p_playlist->p_preparse = vlc_object_create( p_playlist,
sizeof( playlist_preparse_t ) );
- p_playlist->p_preparse->psz_object_name = "preparser";
+ p_playlist->p_preparse->psz_object_name = strdup( "preparser" );
if( !p_playlist->p_preparse )
{
msg_Err( p_playlist, "unable to create preparser" );
// Secondary Preparse
p_playlist->p_fetcher = vlc_object_create( p_playlist,
sizeof( playlist_fetcher_t ) );
- p_playlist->p_fetcher->psz_object_name = "fetcher";
+ p_playlist->p_fetcher->psz_object_name = strdup( "fetcher" );
if( !p_playlist->p_fetcher )
{
msg_Err( p_playlist, "unable to create secondary preparser" );
return NULL;
}
- p_sap->psz_object_name = "sap announcer";
+ p_sap->psz_object_name = strdup( "sap announcer" );
vlc_mutex_init( p_sap, &p_sap->object_lock );