From: Colin Leroy Date: Wed, 17 Oct 2018 07:26:26 +0000 (+0200) Subject: Fix crash in dangling message search. X-Git-Tag: 3.17.2~84 X-Git-Url: http://git.claws-mail.org/?p=claws.git;a=commitdiff_plain;h=36461c0703e2464c0ada230c62d85709dd8a91cf Fix crash in dangling message search. --- diff --git a/src/compose.c b/src/compose.c index 0d8f774f9..11e0b6e6d 100644 --- a/src/compose.c +++ b/src/compose.c @@ -9160,6 +9160,7 @@ static void compose_destroy(Compose *compose) clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY); gtk_text_buffer_remove_selection_clipboard(buffer, clipboard); + message_search_close(compose); gtk_widget_destroy(compose->window); toolbar_destroy(compose->toolbar); g_free(compose->toolbar); diff --git a/src/message_search.c b/src/message_search.c index 1f50a22d8..e73fe8707 100644 --- a/src/message_search.c +++ b/src/message_search.c @@ -122,6 +122,17 @@ void message_search_compose(Compose *compose) message_search_other(&compose_interface, (void *)compose); } +void message_search_close (void *obj) +{ + if(!search_window.window) { + return; + } + if (search_window.interface_obj == obj) { + gtk_widget_hide(search_window.window); + search_window.interface_obj = NULL; + } +} + void message_search_other(SearchInterface *interface, void *obj) { if (!search_window.window) diff --git a/src/message_search.h b/src/message_search.h index e6ab4361a..b5218bfaf 100644 --- a/src/message_search.h +++ b/src/message_search.h @@ -38,5 +38,6 @@ typedef struct { void message_search (MessageView *messageview); void message_search_compose (Compose *compose); void message_search_other (SearchInterface *source, void *obj); +void message_search_close (void *obj); #endif /* __MESSAGE_SEARCH_H__ */ diff --git a/src/messageview.c b/src/messageview.c index 829f15860..fe9767db1 100644 --- a/src/messageview.c +++ b/src/messageview.c @@ -1637,6 +1637,8 @@ void messageview_destroy(MessageView *messageview) g_free(messageview->toolbar); } + message_search_close(messageview); + list_free_strings_full(messageview->trail); msgview_list = g_list_remove(msgview_list, messageview);