From 4eb7cec24b540a1a3e1ab9ee0bf5c39ce503eaf2 Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Tue, 11 Feb 2020 12:58:37 +0000 Subject: [PATCH] trivial: Fix memory leak if fu_device_set_parent() is called multiple times --- libfwupdplugin/fu-device.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libfwupdplugin/fu-device.c b/libfwupdplugin/fu-device.c index cdc48c6c9..adbb1be85 100644 --- a/libfwupdplugin/fu-device.c +++ b/libfwupdplugin/fu-device.c @@ -478,7 +478,10 @@ fu_device_set_parent (FuDevice *self, FuDevice *parent) g_return_if_fail (FU_IS_DEVICE (self)); - g_object_add_weak_pointer (G_OBJECT (parent), (gpointer *) &priv->parent); + if (priv->parent != NULL) + g_object_remove_weak_pointer (G_OBJECT (priv->parent), (gpointer *) &priv->parent); + if (parent != NULL) + g_object_add_weak_pointer (G_OBJECT (parent), (gpointer *) &priv->parent); priv->parent = parent; /* this is what goes over D-Bus */