diff options
author | Dan Winship <danw@gnome.org> | 2014-09-15 15:58:16 -0400 |
---|---|---|
committer | Dan Winship <danw@gnome.org> | 2014-09-17 08:21:21 -0400 |
commit | 6c6cec0366453d6f1820c8dbf814da88f0dd2409 (patch) | |
tree | 89048bb3da2ac3d88fec9ffaf896b389399e0782 | |
parent | b9f9fd39ab438d4aa3dd1b636d7c77e87cb856ef (diff) | |
download | NetworkManager-6c6cec0366453d6f1820c8dbf814da88f0dd2409.tar.gz |
libnm-core: fix getting/setting 0-length array properties
Empty array-valued properties should return a 0-length array from
get_property(), but should also accept NULL as equivalent to a
0-length array from set_property().
-rw-r--r-- | libnm-core/nm-utils.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/libnm-core/nm-utils.c b/libnm-core/nm-utils.c index a528226692..d386440606 100644 --- a/libnm-core/nm-utils.c +++ b/libnm-core/nm-utils.c @@ -618,6 +618,9 @@ _nm_utils_copy_array_to_slist (const GPtrArray *array, gpointer item; int i; + if (!array) + return NULL; + for (i = 0; i < array->len; i++) { item = array->pdata[i]; slist = g_slist_prepend (slist, copy_func (item)); @@ -634,6 +637,9 @@ _nm_utils_copy_array (const GPtrArray *array, GPtrArray *copy; int i; + if (!array) + return g_ptr_array_new_with_free_func (free_func); + copy = g_ptr_array_new_full (array->len, free_func); for (i = 0; i < array->len; i++) g_ptr_array_add (copy, copy_func (array->pdata[i])); @@ -681,8 +687,10 @@ _nm_utils_strv_to_slist (char **strv) int i; GSList *list = NULL; - for (i = 0; strv && strv[i]; i++) - list = g_slist_prepend (list, g_strdup (strv[i])); + if (strv) { + for (i = 0; strv[i]; i++) + list = g_slist_prepend (list, g_strdup (strv[i])); + } return g_slist_reverse (list); } @@ -694,9 +702,6 @@ _nm_utils_slist_to_strv (GSList *slist) char **strv; int len, i = 0; - if (slist == NULL) - return NULL; - len = g_slist_length (slist); strv = g_new (char *, len + 1); |