diff options
author | Thomas Haller <thaller@redhat.com> | 2015-08-18 15:12:43 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-12-04 12:15:12 +0100 |
commit | 7d9f819aa17c514fca7425b55b7d281984d5cbe5 (patch) | |
tree | 845d8eeadceb94c8cbcff5a78a5d946f90152ed7 | |
parent | 15d305c07f4248ec33413c5571e2728bdf7fe779 (diff) | |
download | NetworkManager-7d9f819aa17c514fca7425b55b7d281984d5cbe5.tar.gz |
utils: construct paths array directly in nm_utils_g_value_set_object_path_array()
nm_utils_g_value_set_object_path_array() is used at several places, so that
this optimazation makes some sense.
-rw-r--r-- | src/NetworkManagerUtils.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/NetworkManagerUtils.c b/src/NetworkManagerUtils.c index 5ff4f086bb..92f0efe209 100644 --- a/src/NetworkManagerUtils.c +++ b/src/NetworkManagerUtils.c @@ -3451,21 +3451,22 @@ nm_utils_g_value_set_object_path_array (GValue *value, NMUtilsObjectFunc filter_func, gpointer user_data) { - GPtrArray *paths; + char **paths; + guint i; GSList *iter; - paths = g_ptr_array_new (); - for (iter = objects; iter; iter = iter->next) { + paths = g_new (char *, g_slist_length (objects) + 1); + for (i = 0, iter = objects; iter; iter = iter->next) { NMExportedObject *object = iter->data; if (!nm_exported_object_is_exported (object)) continue; - if (filter_func && !filter_func (G_OBJECT (object), user_data)) + if (filter_func && !filter_func ((GObject *) object, user_data)) continue; - g_ptr_array_add (paths, g_strdup (nm_exported_object_get_path (object))); + paths[i++] = g_strdup (nm_exported_object_get_path (object)); } - g_ptr_array_add (paths, NULL); - g_value_take_boxed (value, (char **) g_ptr_array_free (paths, FALSE)); + paths[i] = NULL; + g_value_take_boxed (value, paths); } /** |