aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2012-09-18 19:01:30 +0200
committerAleksander Morgado <aleksander@lanedo.com>2012-09-18 19:10:05 +0200
commitb65bc50777a9de7d0f5a16503056435b19140048 (patch)
treeb2df5ff8a6b8f55db6f58fd9c8316cd634b0699d /src
parent127900b67b73b80ded9dc24f2bfb8f2274e6a325 (diff)
qmi-port: plug memleak
Ensure we clear all allocated client objects when disposing the port.
Diffstat (limited to 'src')
-rw-r--r--src/mm-qmi-port.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mm-qmi-port.c b/src/mm-qmi-port.c
index 519c5561..a26fdaba 100644
--- a/src/mm-qmi-port.c
+++ b/src/mm-qmi-port.c
@@ -351,7 +351,19 @@ static void
dispose (GObject *object)
{
MMQmiPort *self = MM_QMI_PORT (object);
+ GList *l;
+
+ /* Deallocate all clients */
+ for (l = self->priv->services; l; l = g_list_next (l)) {
+ ServiceInfo *info = l->data;
+
+ if (info->client)
+ g_object_unref (info->client);
+ }
+ g_list_free_full (self->priv->services, (GDestroyNotify)g_free);
+ self->priv->services = NULL;
+ /* Clear device object */
g_clear_object (&self->priv->qmi_device);
G_OBJECT_CLASS (mm_qmi_port_parent_class)->dispose (object);