diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2021-04-08 00:47:55 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2021-04-08 01:12:49 +0200 |
commit | a0e57ac6b09d2695d9938d0394febad619ac904a (patch) | |
tree | e84283722046cab3c8aaed44e95d3af15b48a444 | |
parent | 26099f19e21f278e764b875b257306d6800f0235 (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.c | 3 |
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), |