Fix missing mutex accessing _displayQueue_
[claws.git] / src / addr_compl.c
index 407e6267fe12ff6fe5d2e142e30cf5d4606918c9..1d7d65d654767e1536a684e9c808cfb86361b9a9 100644 (file)
@@ -179,11 +179,20 @@ static gint addr_completion_func(const gchar *needle, const gchar *haystack,
 static void init_all(void)
 {
        g_completion = g_completion_new(completion_func);
-       if (prefs_common.address_search_wildcard)
-               g_completion_set_compare(g_completion, addr_completion_func);
        cm_return_if_fail(g_completion != NULL);
 }
 
+/**
+ * set the compare function (default is strncmp)
+ */
+static void set_match_any_part(const gboolean any_part)
+{
+       if (any_part && prefs_common.address_search_wildcard)
+               g_completion_set_compare(g_completion, addr_completion_func);
+       else
+               g_completion_set_compare(g_completion, strncmp);
+}
+
 static void free_all_addresses(void)
 {
        GList *walk;
@@ -1179,6 +1188,7 @@ static void completion_window_apply_selection(GtkTreeView *list_view,
 void address_completion_start(GtkWidget *mainwindow)
 {
        start_address_completion(NULL);
+       set_match_any_part(TRUE);
 
        /* register focus change hook */
        g_signal_connect(G_OBJECT(mainwindow), "set_focus",
@@ -1641,10 +1651,9 @@ void addrcompl_teardown( void ) {
        /* g_print( "addrcompl_teardown...\n" ); */
        addrcompl_free_window( _compWindow_ );
        _compWindow_ = NULL;
-       if( _displayQueue_ ) {
-               g_list_free( _displayQueue_ );
-       }
-       _displayQueue_ = NULL;
+
+       addrcompl_clear_queue();
+
        _completionIdleID_ = 0;
        /* g_print( "addrcompl_teardown...done\n" ); */
 }