Commit 53638686 authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

vlc_arrays.h: More vlc_dictionary_t fixes.

parent eef8d9d4
...@@ -431,18 +431,21 @@ static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict ) ...@@ -431,18 +431,21 @@ static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict )
{ {
int i; int i;
struct vlc_dictionary_entry_t * p_current, * p_next; struct vlc_dictionary_entry_t * p_current, * p_next;
for( i = 0; i < p_dict->i_size; i++ ) if( p_dict->p_entries )
{ {
p_current = p_dict->p_entries[i]; for( i = 0; i < p_dict->i_size; i++ )
while( p_current )
{ {
p_next = p_dict->p_entries[i]->p_next; p_current = p_dict->p_entries[i];
free( p_dict->p_entries[i]->psz_key ); while( p_current )
free( p_current ); {
p_current = p_next; p_next = p_dict->p_entries[i]->p_next;
free( p_dict->p_entries[i]->psz_key );
free( p_current );
p_current = p_next;
}
} }
free( p_dict->p_entries );
} }
free( p_dict->p_entries );
p_dict->i_size = 0; p_dict->i_size = 0;
} }
...@@ -460,7 +463,10 @@ vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_ ...@@ -460,7 +463,10 @@ vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_
if( !p_entry ) if( !p_entry )
return kVLCDictionaryNotFound; return kVLCDictionaryNotFound;
/* Make sure we return the right item. (Hash collision) */ if( p_entry && !p_entry->p_next )
return p_entry->p_value;
/* Make sure we return the right item. (Hash collision) */
do { do {
if( !strcmp( psz_key, p_entry->psz_key ) ) if( !strcmp( psz_key, p_entry->psz_key ) )
return p_entry->p_value; return p_entry->p_value;
...@@ -475,6 +481,10 @@ vlc_dictionary_keys_count( const vlc_dictionary_t * p_dict ) ...@@ -475,6 +481,10 @@ vlc_dictionary_keys_count( const vlc_dictionary_t * p_dict )
{ {
struct vlc_dictionary_entry_t * p_entry; struct vlc_dictionary_entry_t * p_entry;
int i, count = 0; int i, count = 0;
if( !p_dict->p_entries )
return 0;
for( i = 0; i < p_dict->i_size; i++ ) for( i = 0; i < p_dict->i_size; i++ )
{ {
for( p_entry = p_dict->p_entries[i]; p_entry; p_entry = p_entry->p_next ) count++; for( p_entry = p_dict->p_entries[i]; p_entry; p_entry = p_entry->p_next ) count++;
...@@ -569,7 +579,7 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key, ...@@ -569,7 +579,7 @@ __vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,
} }
vlc_dictionary_clear( p_dict ); vlc_dictionary_clear( p_dict );
p_dict->i_size = new_dict.i_size; p_dict->i_size = new_dict.i_size;
p_dict->p_entries= new_dict.p_entries; p_dict->p_entries = new_dict.p_entries;
} }
} }
} }
......
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