Fix crashes when plugins modify UI during Close Context
This probably doesn't catch them all but setting tab color and printing text at least do not crash in the common case.
This commit is contained in:
джерело
ac986bb3a4
коміт
aabcf6f9f4
1 змінених файлів з 7 додано та 12 видалено
|
@ -173,7 +173,7 @@ void
|
|||
fe_set_tab_color (struct session *sess, int col)
|
||||
{
|
||||
struct session *server_sess = sess->server->server_session;
|
||||
if (sess->gui->is_tab && (col == 0 || sess != current_tab))
|
||||
if (sess->res->tab && sess->gui->is_tab && (col == 0 || sess != current_tab))
|
||||
{
|
||||
switch (col)
|
||||
{
|
||||
|
@ -1010,12 +1010,6 @@ static void
|
|||
mg_topdestroy_cb (GtkWidget *win, session *sess)
|
||||
{
|
||||
/* printf("enter mg_topdestroy. sess %p was destroyed\n", sess);*/
|
||||
|
||||
/* kill the text buffer */
|
||||
gtk_xtext_buffer_free (sess->res->buffer);
|
||||
/* kill the user list */
|
||||
g_object_unref (G_OBJECT (sess->res->user_model));
|
||||
|
||||
session_free (sess); /* tell hexchat.c about it */
|
||||
}
|
||||
|
||||
|
@ -1026,11 +1020,6 @@ mg_ircdestroy (session *sess)
|
|||
{
|
||||
GSList *list;
|
||||
|
||||
/* kill the text buffer */
|
||||
gtk_xtext_buffer_free (sess->res->buffer);
|
||||
/* kill the user list */
|
||||
g_object_unref (G_OBJECT (sess->res->user_model));
|
||||
|
||||
session_free (sess); /* tell hexchat.c about it */
|
||||
|
||||
if (mg_gui == NULL)
|
||||
|
@ -1092,7 +1081,10 @@ mg_tab_close (session *sess)
|
|||
int i;
|
||||
|
||||
if (chan_remove (sess->res->tab, FALSE))
|
||||
{
|
||||
sess->res->tab = NULL;
|
||||
mg_ircdestroy (sess);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0, list = sess_list; list; list = list->next)
|
||||
|
@ -3653,6 +3645,9 @@ fe_server_callback (server *serv)
|
|||
void
|
||||
fe_session_callback (session *sess)
|
||||
{
|
||||
gtk_xtext_buffer_free (sess->res->buffer);
|
||||
g_object_unref (G_OBJECT (sess->res->user_model));
|
||||
|
||||
if (sess->res->banlist && sess->res->banlist->window)
|
||||
mg_close_gen (NULL, sess->res->banlist->window);
|
||||
|
||||
|
|
Завантаження…
Додати таблицю
Посилання в новій задачі