From a0e57ac6b09d2695d9938d0394febad619ac904a Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Thu, 8 Apr 2021 00:47:55 +0200 Subject: 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. --- src/libqmi-glib/qmi-device.c | 3 +++ 1 file changed, 3 insertions(+) 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), -- cgit v1.2.3