summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-08-18 15:12:43 +0200
committerThomas Haller <thaller@redhat.com>2015-12-04 12:15:12 +0100
commit7d9f819aa17c514fca7425b55b7d281984d5cbe5 (patch)
tree845d8eeadceb94c8cbcff5a78a5d946f90152ed7
parent15d305c07f4248ec33413c5571e2728bdf7fe779 (diff)
downloadNetworkManager-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.c15
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);
}
/**