- int j;
- for( j = 0; j < dst->i_extra; j++ )
- {
- if( !strcmp( dst->ppsz_extra_name[j], src->ppsz_extra_name[i] ) )
- {
- free( dst->ppsz_extra_value[j] );
- dst->ppsz_extra_value[j] = strdup( src->ppsz_extra_value[i] );
- break;
- }
- }
- if( j >= dst->i_extra )
- vlc_meta_AddExtra( dst, src->ppsz_extra_name[i], src->ppsz_extra_value[i] );
+ /* Always try to remove the previous value */
+ vlc_dictionary_remove_value_for_key( &dst->extra_tags, ppsz_all_keys[i] );
+ void * p_value = vlc_dictionary_value_for_key( &src->extra_tags, ppsz_all_keys[i] );
+ vlc_dictionary_insert( &dst->extra_tags, ppsz_all_keys[i], p_value );
+ free( ppsz_all_keys[i] );