]> git.sesse.net Git - vlc/commitdiff
Only insert new object into the table one initialized
authorRémi Denis-Courmont <rem@videolan.org>
Wed, 7 May 2008 19:53:15 +0000 (22:53 +0300)
committerRémi Denis-Courmont <rem@videolan.org>
Wed, 7 May 2008 20:13:00 +0000 (23:13 +0300)
src/misc/objects.c

index 4ec786b343ec2852aca9be0e8c8710d61a035a20..79381e5bb8fc4f756bbaba3ac3a8fa707d9f1f35 100644 (file)
@@ -169,15 +169,6 @@ void *vlc_custom_create( vlc_object_t *p_this, size_t i_size,
         }
     }
 
-    vlc_mutex_lock( &structure_lock );
-    p_new->i_object_id = p_libvlc_global->i_counter++;
-
-    /* Wooohaa! If *this* fails, we're in serious trouble! Anyway it's
-     * useless to try and recover anything if pp_objects gets smashed. */
-    TAB_APPEND( p_libvlc_global->i_objects, p_libvlc_global->pp_objects,
-                p_new );
-    vlc_mutex_unlock( &structure_lock );
-
     p_priv->i_refcount = 1;
     p_priv->pf_destructor = kVLCDestructor;
     p_priv->b_thread = false;
@@ -194,6 +185,15 @@ void *vlc_custom_create( vlc_object_t *p_this, size_t i_size,
     vlc_spin_init( &p_priv->spin );
     p_priv->pipes[0] = p_priv->pipes[1] = -1;
 
+    vlc_mutex_lock( &structure_lock );
+    p_new->i_object_id = p_libvlc_global->i_counter++;
+
+    /* Wooohaa! If *this* fails, we're in serious trouble! Anyway it's
+     * useless to try and recover anything if pp_objects gets smashed. */
+    TAB_APPEND( p_libvlc_global->i_objects, p_libvlc_global->pp_objects,
+                p_new );
+    vlc_mutex_unlock( &structure_lock );
+
     if( i_type == VLC_OBJECT_LIBVLC )
     {
         var_Create( p_new, "list", VLC_VAR_STRING | VLC_VAR_ISCOMMAND );