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