[vlc-devel] commit: Hide psz_object_name in private data ( Rémi Denis-Courmont )

git version control git at videolan.org
Wed Aug 19 23:05:46 CEST 2009


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Aug 20 00:04:13 2009 +0300| [073c5a248e71a73a47c80066ad9848516e96778e] | committer: Rémi Denis-Courmont 

Hide psz_object_name in private data

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=073c5a248e71a73a47c80066ad9848516e96778e
---

 include/vlc_common.h     |    1 -
 src/audio_output/input.c |    5 ++++-
 src/libvlc.c             |    3 ++-
 src/libvlc.h             |    2 ++
 src/misc/filter_chain.c  |    3 ++-
 src/misc/objects.c       |   23 ++++++++++++-----------
 src/modules/modules.c    |    8 +++-----
 7 files changed, 25 insertions(+), 20 deletions(-)

diff --git a/include/vlc_common.h b/include/vlc_common.h
index a70f7ef..fc46567 100644
--- a/include/vlc_common.h
+++ b/include/vlc_common.h
@@ -500,7 +500,6 @@ typedef int ( * vlc_callback_t ) ( vlc_object_t *,      /* variable's object */
  */                                                                         \
 /**@{*/                                                                     \
     const char *psz_object_type;                                            \
-    char *psz_object_name;                                                  \
                                                                             \
     /* Messages header */                                                   \
     char *psz_header;                                                       \
diff --git a/src/audio_output/input.c b/src/audio_output/input.c
index a76e10b..9f58173 100644
--- a/src/audio_output/input.c
+++ b/src/audio_output/input.c
@@ -451,7 +451,10 @@ int aout_InputNew( aout_instance_t * p_aout, aout_input_t * p_input, const aout_
     for( int i = 0; i < p_input->i_nb_filters; i++ )
     {
         aout_filter_t *p_filter = p_input->pp_filters[i];
-        if( strcmp( "scaletempo", p_filter->psz_object_name ) == 0 )
+        /* FIXME: suspicious access to psz_object_name */
+#warning Is this right?
+        if( strcmp( "scaletempo",
+                    vlc_internals(p_filter)->psz_object_name ) == 0 )
         {
           p_input->p_playback_rate_filter = p_filter;
           break;
diff --git a/src/libvlc.c b/src/libvlc.c
index 9dc80c6..66f0e31 100644
--- a/src/libvlc.c
+++ b/src/libvlc.c
@@ -263,7 +263,8 @@ libvlc_int_t * libvlc_InternalCreate( void )
     priv->p_playlist = NULL;
     priv->p_dialog_provider = NULL;
     priv->p_vlm = NULL;
-    p_libvlc->psz_object_name = strdup( "libvlc" );
+    /* Avoid being called "memcpy":*/
+    vlc_internals(p_libvlc)->psz_object_name = strdup( "libvlc" );
 
     /* Initialize message queue */
     msg_Create( p_libvlc );
diff --git a/src/libvlc.h b/src/libvlc.h
index 3d15f95..76cf3e4 100644
--- a/src/libvlc.h
+++ b/src/libvlc.h
@@ -160,6 +160,8 @@ module_t *module_find_by_shortcut (const char *psz_shortcut);
 typedef struct vlc_object_internals_t
 {
     int             i_object_type; /* Object type, deprecated */
+    char           *psz_object_name; /* module name */
+    /* ^^ can only used from the thread that called module_(un)need() */
 
     /* Object variables */
     variable_t *    p_vars;
diff --git a/src/misc/filter_chain.c b/src/misc/filter_chain.c
index d66d2a7..1e5c7f4 100644
--- a/src/misc/filter_chain.c
+++ b/src/misc/filter_chain.c
@@ -347,7 +347,8 @@ static filter_t *filter_chain_AppendFilterInternal( filter_chain_t *p_chain,
     vlc_array_append( &p_chain->mouses, p_mouse );
 
     msg_Dbg( p_chain->p_this, "Filter '%s' (%p) appended to chain",
-             psz_name ? psz_name : p_filter->psz_object_name, p_filter );
+             psz_name ? psz_name : vlc_internals(p_filter)->psz_object_name,
+             p_filter );
 
     return p_filter;
 
diff --git a/src/misc/objects.c b/src/misc/objects.c
index d10f61b..da38656 100644
--- a/src/misc/objects.c
+++ b/src/misc/objects.c
@@ -122,7 +122,7 @@ void *__vlc_custom_create( vlc_object_t *p_this, size_t i_size,
 
     p_priv->i_object_type = i_type;
     p_new->psz_object_type = psz_type;
-    p_new->psz_object_name = NULL;
+    p_priv->psz_object_name = NULL;
 
     p_new->b_die = false;
     p_new->b_error = false;
@@ -283,7 +283,7 @@ static void vlc_object_destroy( vlc_object_t *p_this )
 
     free( p_this->psz_header );
 
-    FREENULL( p_this->psz_object_name );
+    free( p_priv->psz_object_name );
 
     vlc_spin_destroy( &p_priv->ref_spin );
     if( p_priv->pipes[1] != -1 && p_priv->pipes[1] != p_priv->pipes[0] )
@@ -482,8 +482,8 @@ vlc_object_t *vlc_object_find_name( vlc_object_t *p_this,
     msg_Warn( p_this, "%s(%s) is not safe!", __func__, psz_name );
     /* If have the requested name ourselves, don't look further */
     if( !(i_mode & FIND_STRICT)
-        && p_this->psz_object_name
-        && !strcmp( p_this->psz_object_name, psz_name ) )
+        && vlc_internals(p_this)->psz_object_name
+        && !strcmp( vlc_internals(p_this)->psz_object_name, psz_name ) )
     {
         vlc_object_hold( p_this );
         return p_this;
@@ -583,7 +583,7 @@ void __vlc_object_release( vlc_object_t *p_this )
                 fprintf( stderr,
                          "ERROR: leaking object (%p, type:%s, name:%s)\n",
                          leaked, leaked->psz_object_type,
-                         leaked->psz_object_name );
+                         vlc_internals(leaked)->psz_object_name );
                 /* Dump object to ease debugging */
                 vlc_object_dump( leaked );
                 fflush(stderr);
@@ -1016,8 +1016,8 @@ static vlc_object_t * FindObjectName( vlc_object_t *p_this,
         p_tmp = p_this->p_parent;
         if( p_tmp )
         {
-            if( p_tmp->psz_object_name
-                && !strcmp( p_tmp->psz_object_name, psz_name ) )
+            if( vlc_internals(p_tmp)->psz_object_name
+             && !strcmp( vlc_internals(p_tmp)->psz_object_name, psz_name ) )
             {
                 vlc_object_hold( p_tmp );
                 return p_tmp;
@@ -1033,8 +1033,8 @@ static vlc_object_t * FindObjectName( vlc_object_t *p_this,
         for( i = vlc_internals( p_this )->i_children; i--; )
         {
             p_tmp = vlc_internals( p_this )->pp_children[i];
-            if( p_tmp->psz_object_name
-                && !strcmp( p_tmp->psz_object_name, psz_name ) )
+            if( vlc_internals(p_tmp)->psz_object_name
+             && !strcmp( vlc_internals(p_tmp)->psz_object_name, psz_name ) )
             {
                 vlc_object_hold( p_tmp );
                 return p_tmp;
@@ -1066,9 +1066,10 @@ static void PrintObject( vlc_object_t *p_this, const char *psz_prefix )
 
     int canc = vlc_savecancel ();
     memset( &psz_name, 0, sizeof(psz_name) );
-    if( p_this->psz_object_name )
+    if( vlc_internals(p_this)->psz_object_name )
     {
-        snprintf( psz_name, 49, " \"%s\"", p_this->psz_object_name );
+        snprintf( psz_name, 49, " \"%s\"",
+                  vlc_internals(p_this)->psz_object_name );
         if( psz_name[48] )
             psz_name[48] = '\"';
     }
diff --git a/src/modules/modules.c b/src/modules/modules.c
index f0a015e..6a0aa47 100644
--- a/src/modules/modules.c
+++ b/src/modules/modules.c
@@ -607,15 +607,13 @@ found_shortcut:
     {
         msg_Dbg( p_this, "using %s module \"%s\"",
                  psz_capability, p_module->psz_object_name );
-        if( !p_this->psz_object_name )
+        if( !vlc_internals(p_this)->psz_object_name )
         {
             /* This assumes that p_this is the object which will be using the
              * module. That's not always the case ... but it is in most cases.
              */
-            if( psz_alias )
-                p_this->psz_object_name = strdup( psz_alias );
-            else
-                p_this->psz_object_name = strdup( p_module->psz_object_name );
+            vlc_internals(p_this)->psz_object_name =
+                strdup( psz_alias ? psz_alias : p_module->psz_object_name );
         }
     }
     else if( count == 0 )




More information about the vlc-devel mailing list