- i_cancel = vlc_savecancel();
- p_finder->pf_find( p_finder );
- vlc_restorecancel( i_cancel );
- module_unneed( p_finder, p_module );
-
- MergeSources( p_manager, p_finder->entries.p_elems, p_finder->entries.i_size );
+ module_t *p_module;
+ ARRAY_INIT( p_finder->entries );
+ vlc_mutex_lock( &p_manager->p_priv->finder.lock );
+ p_finder->psz_uri = p_manager->p_priv->finder.psz_uri_hint;
+ p_manager->p_priv->finder.psz_uri_hint = NULL;
+ vlc_mutex_unlock( &p_manager->p_priv->finder.lock );
+
+ p_module = module_need( p_finder, "addons finder", NULL, false );
+ if( p_module )
+ {
+ p_finder->pf_find( p_finder );
+ module_unneed( p_finder, p_module );
+ MergeSources( p_manager, p_finder->entries.p_elems, p_finder->entries.i_size );
+ }
+ ARRAY_RESET( p_finder->entries );
+ free( p_finder->psz_uri );
+ vlc_object_release( p_finder );