Commit b84a7ea0 authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

objects: inline NewList() and fix error case

parent d1f507fb
...@@ -66,8 +66,6 @@ static vlc_object_t * FindName ( vlc_object_internals_t *, const char * ); ...@@ -66,8 +66,6 @@ static vlc_object_t * FindName ( vlc_object_internals_t *, const char * );
static void PrintObject( vlc_object_internals_t *, const char * ); static void PrintObject( vlc_object_internals_t *, const char * );
static void DumpStructure( vlc_object_internals_t *, unsigned, char * ); static void DumpStructure( vlc_object_internals_t *, unsigned, char * );
static vlc_list_t * NewList ( int );
static void vlc_object_destroy( vlc_object_t *p_this ); static void vlc_object_destroy( vlc_object_t *p_this );
/***************************************************************************** /*****************************************************************************
...@@ -384,21 +382,35 @@ void vlc_object_release( vlc_object_t *p_this ) ...@@ -384,21 +382,35 @@ void vlc_object_release( vlc_object_t *p_this )
*/ */
vlc_list_t *vlc_list_children( vlc_object_t *obj ) vlc_list_t *vlc_list_children( vlc_object_t *obj )
{ {
vlc_list_t *l; vlc_list_t *l = malloc (sizeof (*l));
if (unlikely(l == NULL))
return NULL;
l->i_count = 0;
l->p_values = NULL;
vlc_object_internals_t *priv; vlc_object_internals_t *priv;
unsigned count = 0; unsigned count = 0;
libvlc_lock (obj->p_libvlc); libvlc_lock (obj->p_libvlc);
for (priv = vlc_internals (obj)->first; priv; priv = priv->next) for (priv = vlc_internals (obj)->first; priv; priv = priv->next)
count++; count++;
l = NewList (count);
if (likely(l != NULL))
{
unsigned i = 0;
for (priv = vlc_internals (obj)->first; priv; priv = priv->next) if (count > 0)
l->p_values[i++].p_address = vlc_object_hold (vlc_externals (priv)); {
l->p_values = malloc (count * sizeof (vlc_value_t));
if (unlikely(l->p_values == NULL))
{
libvlc_unlock (obj->p_libvlc);
free (l);
return NULL;
}
} }
unsigned i = 0;
for (priv = vlc_internals (obj)->first; priv; priv = priv->next)
l->p_values[i++].p_address = vlc_object_hold (vlc_externals (priv));
libvlc_unlock (obj->p_libvlc); libvlc_unlock (obj->p_libvlc);
return l; return l;
} }
...@@ -549,27 +561,3 @@ static void DumpStructure (vlc_object_internals_t *priv, unsigned i_level, ...@@ -549,27 +561,3 @@ static void DumpStructure (vlc_object_internals_t *priv, unsigned i_level,
DumpStructure (priv, i_level + 2, psz_foo); DumpStructure (priv, i_level + 2, psz_foo);
} }
} }
static vlc_list_t * NewList( int i_count )
{
vlc_list_t * p_list = malloc( sizeof( vlc_list_t ) );
if( p_list == NULL )
return NULL;
p_list->i_count = i_count;
if( i_count == 0 )
{
p_list->p_values = NULL;
return p_list;
}
p_list->p_values = malloc( i_count * sizeof( vlc_value_t ) );
if( p_list->p_values == NULL )
{
p_list->i_count = 0;
return p_list;
}
return p_list;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment