aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@aleksander.es>2021-04-08 00:47:55 +0200
committerAleksander Morgado <aleksander@aleksander.es>2021-04-08 01:12:49 +0200
commita0e57ac6b09d2695d9938d0394febad619ac904a (patch)
treee84283722046cab3c8aaed44e95d3af15b48a444
parent26099f19e21f278e764b875b257306d6800f0235 (diff)
libqmi-glib,device: plug memleak when QmiDevice is opened multiple times
On a QmiDevice re-open, if we're opening with the version info check flag, we would be re-querying the device for the list of supported services. That is fine, but we must make sure the array of supported services from the last open operation is cleared before storing the new one.
-rw-r--r--src/libqmi-glib/qmi-device.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libqmi-glib/qmi-device.c b/src/libqmi-glib/qmi-device.c
index d8e82de..d84eadd 100644
--- a/src/libqmi-glib/qmi-device.c
+++ b/src/libqmi-glib/qmi-device.c
@@ -2268,6 +2268,8 @@ open_version_info_ready (QmiClientCtl *client_ctl,
qmi_message_ctl_get_version_info_output_get_service_list (output,
&service_list,
NULL);
+
+ g_clear_pointer (&self->priv->supported_services, g_array_unref);
self->priv->supported_services = g_array_ref (service_list);
g_debug ("[%s] QMI Device supports %u services:",
@@ -2321,6 +2323,7 @@ build_services_from_qrtr_node (GTask *task)
services = qrtr_node_peek_service_info_list (self->priv->node);
n_services = g_list_length (services);
+ g_clear_pointer (&self->priv->supported_services, g_array_unref);
self->priv->supported_services = g_array_sized_new (FALSE,
FALSE,
sizeof (QmiMessageCtlGetVersionInfoOutputServiceListService),