From 803e65e8e133a969d21d333ec932884e7617d438 Mon Sep 17 00:00:00 2001
From: Carlos Garnacho <carlosg@gnome.org>
Date: Fri, 27 Oct 2017 21:40:45 +0200
Subject: [PATCH] Fix GVariant leaks
g_task_propagate_pointer() gives ownership of the data to the caller, so
the GVariants handed this way must be unref'ed after the contents have
been extracted/copied.
---
src/ibusbus.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/ibusbus.c b/src/ibusbus.c
index fc0c90335..11659c41f 100644
--- a/src/ibusbus.c
+++ b/src/ibusbus.c
@@ -755,6 +755,7 @@ _async_finish_object_path (GTask *task,
g_variant_get (result, "(v)", &variant);
path = g_variant_dup_string (variant, NULL);
g_variant_unref (variant);
+ g_variant_unref (result);
return path;
}
@@ -772,6 +773,7 @@ _async_finish_string (GTask *task,
}
g_return_val_if_fail (variant != NULL, NULL);
g_variant_get (variant, "(&s)", &s);
+ g_variant_unref (variant);
return s;
}
@@ -789,6 +791,7 @@ _async_finish_gboolean (GTask *task,
}
g_return_val_if_fail (variant != NULL, FALSE);
g_variant_get (variant, "(b)", &retval);
+ g_variant_unref (variant);
return retval;
}
@@ -807,6 +810,7 @@ _async_finish_guint (GTask *task,
}
g_return_val_if_fail (variant != NULL, bad_id);
g_variant_get (variant, "(u)", &id);
+ g_variant_unref (variant);
return id;
}
@@ -1864,6 +1868,7 @@ ibus_bus_list_engines_async_finish (IBusBus *bus,
}
g_variant_iter_free (iter);
g_variant_unref (variant);
+ g_variant_unref (result);
return retval;
}
@@ -2243,6 +2248,7 @@ ibus_bus_get_global_engine_async_finish (IBusBus *bus,
g_variant_unref (obj);
g_variant_unref (variant);
}
+ g_variant_unref (result);
return engine;
}
@@ -2461,6 +2467,7 @@ ibus_bus_get_ibus_property_async_finish (IBusBus *bus,
g_return_val_if_fail (result != NULL, NULL);
GVariant *retval = NULL;
g_variant_get (result, "(v)", &retval);
+ g_variant_unref (result);
return retval;
}