summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Klumpp <matthias@tenstral.net>2021-01-12 19:31:38 +0100
committerMatthias Klumpp <matthias@tenstral.net>2021-01-12 19:31:38 +0100
commit89c9867925f41d20e410bdb5cabb7d757d60de3e (patch)
treed7ec0234edf501a4ec2485f2cddea3b8484f31df
parentc32e3aa573ad3086b7f3c2d510a5b8e01c6bbc75 (diff)
Free scheduler array correctly again
Accidentally broken in last commit.
-rw-r--r--src/pk-scheduler.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/pk-scheduler.c b/src/pk-scheduler.c
index 99a30cbb8..754ce3d1e 100644
--- a/src/pk-scheduler.c
+++ b/src/pk-scheduler.c
@@ -210,6 +210,12 @@ pk_scheduler_item_free (PkSchedulerItem *item)
g_free (item);
}
+static void
+pk_scheduler_item_free_cb (PkSchedulerItem *item, gpointer user_data)
+{
+ pk_scheduler_item_free (item);
+}
+
static gboolean
pk_scheduler_remove_internal (PkScheduler *scheduler, PkSchedulerItem *item)
{
@@ -1020,7 +1026,7 @@ static void
pk_scheduler_init (PkScheduler *scheduler)
{
scheduler->priv = PK_SCHEDULER_GET_PRIVATE (scheduler);
- scheduler->priv->array = g_ptr_array_new_with_free_func ((GDestroyNotify) pk_scheduler_item_free);
+ scheduler->priv->array = g_ptr_array_new ();
scheduler->priv->introspection = pk_load_introspection (PK_DBUS_INTERFACE_TRANSACTION ".xml",
NULL);
scheduler->priv->unwedge_id = g_timeout_add_seconds (PK_TRANSACTION_WEDGE_CHECK,
@@ -1042,7 +1048,10 @@ pk_scheduler_finalize (GObject *object)
if (scheduler->priv->unwedge_id != 0)
g_source_remove (scheduler->priv->unwedge_id);
- g_ptr_array_unref (scheduler->priv->array);
+ g_ptr_array_foreach (scheduler->priv->array,
+ (GFunc) pk_scheduler_item_free_cb, NULL);
+ g_ptr_array_free (scheduler->priv->array, TRUE);
+
g_dbus_node_info_unref (scheduler->priv->introspection);
g_key_file_unref (scheduler->priv->conf);
if (scheduler->priv->backend != NULL)