--- a/libpurple/account.c Thu Jun 09 03:01:29 2022 -0500
+++ b/libpurple/account.c Thu Jun 09 03:04:16 2022 -0500
@@ -1159,7 +1159,6 @@
purple_account_disconnect(PurpleAccount *account)
PurpleAccountPrivate *priv;
@@ -1175,8 +1174,6 @@
priv->disconnecting = TRUE;
- gc = purple_account_get_connection(account);
purple_account_set_connection(account, NULL);
priv->disconnecting = FALSE;
@@ -1559,6 +1556,8 @@
g_return_if_fail(PURPLE_IS_ACCOUNT(account));
priv = purple_account_get_instance_private(account);
+ g_clear_object(&priv->gc); g_object_notify_by_pspec(G_OBJECT(account), properties[PROP_CONNECTION]);
--- a/libpurple/connection.c Thu Jun 09 03:01:29 2022 -0500
+++ b/libpurple/connection.c Thu Jun 09 03:04:16 2022 -0500
@@ -745,7 +745,6 @@
purple_connection_constructed(GObject *object) {
PurpleConnection *gc = PURPLE_CONNECTION(object);
- PurpleAccount *account;
G_OBJECT_CLASS(purple_connection_parent_class)->constructed(object);
@@ -757,9 +756,7 @@
- g_object_get(gc, "account", &account, NULL);
- purple_account_set_connection(account, gc);
- g_object_unref(account);
+ purple_account_set_connection(gc->account, gc); purple_signal_emit(purple_connections_get_handle(), "signing-on", gc);