[PATCH 1/5] core: use g_list_copy_deep for deep copying a GList

Ben Chan benchan at chromium.org
Fri Jun 23 16:11:04 UTC 2017


---
 src/mm-base-modem.c          | 6 +-----
 src/mm-bearer-list.c         | 5 +++--
 src/mm-broadband-modem-qmi.c | 3 +--
 src/mm-device.c              | 8 +++-----
 4 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/src/mm-base-modem.c b/src/mm-base-modem.c
index d4f94495..29df53c3 100644
--- a/src/mm-base-modem.c
+++ b/src/mm-base-modem.c
@@ -706,13 +706,9 @@ mm_base_modem_peek_best_data_port (MMBaseModem *self,
 GList *
 mm_base_modem_get_data_ports (MMBaseModem *self)
 {
-    GList *copy;
-
     g_return_val_if_fail (MM_IS_BASE_MODEM (self), NULL);
 
-    copy = g_list_copy (self->priv->data);
-    g_list_foreach (copy, (GFunc)g_object_ref, NULL);
-    return copy;
+    return g_list_copy_deep (self->priv->data, (GCopyFunc)g_object_ref, NULL);
 }
 
 GList *
diff --git a/src/mm-bearer-list.c b/src/mm-bearer-list.c
index 9ad98aeb..81e847a7 100644
--- a/src/mm-bearer-list.c
+++ b/src/mm-bearer-list.c
@@ -250,8 +250,9 @@ mm_bearer_list_disconnect_all_bearers (MMBearerList *self,
 
     ctx = g_new0 (DisconnectAllContext, 1);
     /* Get a copy of the list */
-    ctx->pending = g_list_copy (self->priv->bearers);
-    g_list_foreach (ctx->pending, (GFunc) g_object_ref, NULL);
+    ctx->pending = g_list_copy_deep (self->priv->bearers,
+                                     (GCopyFunc)g_object_ref,
+                                     NULL);
 
     task = g_task_new (self, NULL, callback, user_data);
     g_task_set_task_data (task,
diff --git a/src/mm-broadband-modem-qmi.c b/src/mm-broadband-modem-qmi.c
index 0e060d9a..38356426 100644
--- a/src/mm-broadband-modem-qmi.c
+++ b/src/mm-broadband-modem-qmi.c
@@ -10353,8 +10353,7 @@ firmware_load_list (MMIfaceModemFirmware *_self,
                                         firmware_load_list);
 
     /* We'll return the new list of new references we create here */
-    dup = g_list_copy (self->priv->firmware_list);
-    g_list_foreach (dup, (GFunc)g_object_ref, NULL);
+    dup = g_list_copy_deep (self->priv->firmware_list, (GCopyFunc)g_object_ref, NULL);
 
     g_simple_async_result_set_op_res_gpointer (result, dup, NULL);
     g_simple_async_result_complete_in_idle (result);
diff --git a/src/mm-device.c b/src/mm-device.c
index 1b69f3de..1e53870a 100644
--- a/src/mm-device.c
+++ b/src/mm-device.c
@@ -509,11 +509,9 @@ mm_device_peek_port_probe_list (MMDevice *self)
 GList *
 mm_device_get_port_probe_list (MMDevice *self)
 {
-    GList *copy;
-
-    copy = g_list_copy (self->priv->port_probes);
-    g_list_foreach (copy, (GFunc)g_object_ref, NULL);
-    return copy;
+    return g_list_copy_deep (self->priv->port_probes,
+                             (GCopyFunc)g_object_ref,
+                             NULL);
 }
 
 gboolean
-- 
2.13.1.611.g7e3b11ae1-goog



More information about the ModemManager-devel mailing list