pidgin/pidgin

Fix leaks of GSources.

2020-04-13, Elliott Sales de Andrade
489c56155c33
Parents 140e04d7d655
Children 351db01b452d
Fix leaks of GSources.

They are ref'd by `g_source_attach`, so we should unref our copy when we
don't need it.
--- a/libpurple/protocols/bonjour/xmpp.c Mon Apr 27 00:31:21 2020 +0000
+++ b/libpurple/protocols/bonjour/xmpp.c Mon Apr 13 03:07:41 2020 -0400
@@ -372,6 +372,7 @@
(GSourceFunc)_send_data_write_cb,
pb, NULL);
bconv->tx_handler = g_source_attach(source, NULL);
+ g_source_unref(source);
}
purple_circular_buffer_append(bconv->tx_buf, message + ret, len - ret);
}
@@ -604,6 +605,7 @@
g_source_set_callback(source, (GSourceFunc)_start_stream, bconv,
NULL);
bconv->tx_handler = g_source_attach(source, NULL);
+ g_source_unref(source);
} else {
bconv->sent_stream_start = FULLY_SENT;
}
@@ -669,6 +671,7 @@
g_source_set_callback(source, (GSourceFunc)_send_data_write_cb,
bconv->pb, NULL);
bconv->tx_handler = g_source_attach(source, NULL);
+ g_source_unref(source);
/* We can probably write the data right now. */
_send_data_write_cb(G_OBJECT(bconv->output), bconv->pb);
}
@@ -745,6 +748,7 @@
g_source_set_callback(source, (GSourceFunc)_client_socket_handler,
bconv, NULL);
bconv->rx_handler = g_source_attach(source, NULL);
+ g_source_unref(source);
g_free(address_text);
}
@@ -901,6 +905,7 @@
g_source_set_callback(rx_source, (GSourceFunc)_client_socket_handler,
bb->conversation, NULL);
bb->conversation->rx_handler = g_source_attach(rx_source, NULL);
+ g_source_unref(rx_source);
}
void
--- a/libpurple/protocols/jabber/jabber.c Mon Apr 27 00:31:21 2020 +0000
+++ b/libpurple/protocols/jabber/jabber.c Mon Apr 13 03:07:41 2020 -0400
@@ -739,6 +739,7 @@
G_POLLABLE_INPUT_STREAM(js->input), js->cancellable);
g_source_set_callback(source, (GSourceFunc)jabber_recv_cb, js->gc, NULL);
js->inpa = g_source_attach(source, NULL);
+ g_source_unref(source);
}
static void