--- a/libpurple/protocols/jabber/jabber.c Fri Jul 24 04:43:46 2020 -0500
+++ b/libpurple/protocols/jabber/jabber.c Mon Jul 27 00:20:24 2020 -0500
@@ -380,8 +380,10 @@
purple_queued_output_stream_clear_queue(stream);
- g_prefix_error(&error, "%s", _("Lost connection with server: "));
- purple_connection_take_error(js->gc, error);
+ if (error->code != G_IO_ERROR_CANCELLED) { + g_prefix_error(&error, "%s", _("Lost connection with server: ")); + purple_connection_take_error(js->gc, error); --- a/libpurple/protocols/jabber/jabber.h Fri Jul 24 04:43:46 2020 -0500
+++ b/libpurple/protocols/jabber/jabber.h Mon Jul 27 00:20:24 2020 -0500
@@ -61,6 +61,8 @@
#include <libsoup/soup.h>
--- a/libpurple/purple-gio.c Fri Jul 24 04:43:46 2020 -0500
+++ b/libpurple/purple-gio.c Mon Jul 27 00:20:24 2020 -0500
@@ -49,9 +49,10 @@
/* Close input stream, from wrapper or GIOStream */
if (!g_input_stream_close(data->input, NULL, &error)) {
- purple_debug_warning("gio",
- "Error closing input stream: %s",
+ if (error->code != G_IO_ERROR_CANCELLED) { + purple_debug_warning("gio", "Error closing input stream: %s", @@ -59,9 +60,10 @@
/* Close output stream, from wrapper or GIOStream */
if (!g_output_stream_close(data->output, NULL, &error)) {
- purple_debug_warning("gio",
- "Error closing output stream: %s",
+ if (error->code != G_IO_ERROR_CANCELLED) { + purple_debug_warning("gio", "Error closing output stream: %s", @@ -69,9 +71,10 @@
if (!g_io_stream_close(data->stream, NULL, &error)) {
- purple_debug_warning("gio",
- "Error closing stream: %s",
+ if (error->code != G_IO_ERROR_CANCELLED) { + purple_debug_warning("gio", "Error closing stream: %s", --- a/pidgin/pidginaccountsmenu.c Fri Jul 24 04:43:46 2020 -0500
+++ b/pidgin/pidginaccountsmenu.c Mon Jul 27 00:20:24 2020 -0500
@@ -80,7 +80,10 @@
GtkWidget *item = NULL, *submenu = NULL;
/* if the account is in the disabled list, delete its widget */
- g_hash_table_remove(menu->disabled_items, account);
+ if (g_hash_table_lookup_extended(menu->disabled_items, account, NULL, &item)) { + g_clear_pointer(&item, gtk_widget_destroy); + g_hash_table_remove(menu->disabled_items, account); item = pidgin_accounts_menu_create_account_menu_item(menu, account);
gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
@@ -102,7 +105,10 @@
/* if the account is in the enabled list, delete its widget */
- g_hash_table_remove(menu->account_items, account);
+ if (g_hash_table_lookup_extended(menu->account_items, account, NULL, &item)) { + g_clear_pointer(&item, gtk_widget_destroy); + g_hash_table_remove(menu->account_items, account); item = pidgin_accounts_menu_create_account_menu_item(menu, account);
g_signal_connect(G_OBJECT(item), "activate",
@@ -173,11 +179,9 @@
/* create our storage for the items */
menu->account_items = g_hash_table_new_full(g_direct_hash, g_direct_equal,
- (GDestroyNotify)gtk_widget_destroy);
menu->disabled_items = g_hash_table_new_full(g_direct_hash, g_direct_equal,
- (GDestroyNotify)gtk_widget_destroy);
/* add all of the existing accounts */
pidgin_accounts_menu_add_current(menu);