pidgin/pidgin

2124729f5026
Parents d04961ef2a48
Children 7646d24a31be
Apply ivanhoe's spell check crash fix from /r/1951 to default

Testing Done:
Compiled

Reviewed at https://reviews.imfreedom.org/r/2072/
--- a/pidgin/plugins/spellchk/spellchk.c Thu Nov 17 01:56:11 2022 -0600
+++ b/pidgin/plugins/spellchk/spellchk.c Thu Nov 17 23:38:41 2022 -0600
@@ -281,12 +281,15 @@
g_return_if_fail(spell != NULL);
- buffer = gtk_text_view_get_buffer(spell->view);
+ if(spell->view != NULL) {
+ buffer = gtk_text_view_get_buffer(spell->view);
- g_signal_handlers_disconnect_matched(buffer,
- G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL,
- spell);
+ g_signal_handlers_disconnect_matched(buffer,
+ G_SIGNAL_MATCH_DATA,
+ 0, 0, NULL, NULL,
+ spell);
+ }
+
g_free(spell->word);
g_free(spell);
}
@@ -641,6 +644,7 @@
/* attach to the widget */
spell = g_new0(spellchk, 1);
spell->view = view;
+ g_object_add_weak_pointer(G_OBJECT(view), (gpointer *)&spell->view);
g_object_set_data_full(G_OBJECT(view), SPELLCHK_OBJECT_KEY, spell,
(GDestroyNotify)spellchk_free);
@@ -2333,6 +2337,8 @@
spellchk *spell = g_object_get_data(G_OBJECT(gtkconv->entry), SPELLCHK_OBJECT_KEY);
g_signal_handlers_disconnect_by_func(gtkconv->entry, message_send_cb, spell);
+ g_object_remove_weak_pointer(G_OBJECT(gtkconv->entry),
+ (gpointer*)&spell->view);
g_object_set_data(G_OBJECT(gtkconv->entry), SPELLCHK_OBJECT_KEY, NULL);
}