pidgin/pidgin

Parents c9c950ce44bc
Children e87c321f05fa
g_task_return_* refs a task so we need to make sure we remove our reference when we're done with the task.

Testing Done:
Compiled and connected to bonjour and xmpp locally.

Reviewed at https://reviews.imfreedom.org/r/470/
--- a/libpurple/plugins/keyrings/wincred.c Sat Jan 30 22:32:07 2021 -0600
+++ b/libpurple/plugins/keyrings/wincred.c Sat Jan 30 22:33:58 2021 -0600
@@ -89,6 +89,7 @@
target_name = wincred_get_target_name(account, &error);
if (target_name == NULL) {
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -122,6 +123,7 @@
}
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -139,6 +141,7 @@
PURPLE_KEYRING_ERROR_BACKENDFAIL,
_("Cannot read password (unicode error)."));
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
} else {
purple_debug_misc("keyring-wincred",
@@ -147,6 +150,7 @@
}
g_task_return_pointer(task, password, g_free);
+ g_object_unref(G_OBJECT(task));
}
static gchar *
@@ -179,6 +183,7 @@
target_name = wincred_get_target_name(account, &error);
if (target_name == NULL) {
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -188,6 +193,7 @@
g_free(target_name);
purple_debug_fatal("keyring-wincred", "Couldn't convert username");
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -197,6 +203,7 @@
g_free(target_name);
purple_debug_fatal("keyring-wincred", "Couldn't convert password");
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -240,6 +247,8 @@
} else {
g_task_return_boolean(task, TRUE);
}
+
+ g_object_unref(G_OBJECT(task));
}
static gboolean
@@ -267,6 +276,7 @@
target_name = wincred_get_target_name(account, &error);
if (target_name == NULL) {
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -274,7 +284,6 @@
purple_debug_misc("keyring-wincred", "Password for account %s removed",
purple_account_get_username(account));
g_task_return_boolean(task, TRUE);
-
} else {
DWORD error_code = GetLastError();
@@ -302,6 +311,8 @@
g_task_return_error(task, error);
}
+
+ g_object_unref(G_OBJECT(task));
}
static gboolean
--- a/libpurple/purplecredentialmanager.c Sat Jan 30 22:32:07 2021 -0600
+++ b/libpurple/purplecredentialmanager.c Sat Jan 30 22:33:58 2021 -0600
@@ -442,6 +442,7 @@
"credential provider"));
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -490,6 +491,7 @@
name);
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -502,6 +504,7 @@
"credential provider"));
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}
@@ -548,6 +551,7 @@
"credential provider"));
g_task_return_error(task, error);
+ g_object_unref(G_OBJECT(task));
return;
}