libpurple/plugins/keyrings/wincred.c

changeset 40749
b7ee9469eccc
parent 40747
265694d7b23d
child 40790
e92d5c060155
--- 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

mercurial