Skip to content
Snippets Groups Projects
Commit 80dbe647 authored by Simon McVittie's avatar Simon McVittie
Browse files

json-utils: Don't critical if array_member exists but is not an array

parent 7a475b1e
No related branches found
No related tags found
1 merge request!164Preparation for !158
......@@ -98,17 +98,21 @@ _srt_json_object_dup_strv_member (JsonObject *json_obj,
const gchar *placeholder)
{
JsonArray *array;
JsonNode *arr_node;
guint length;
gchar **ret = NULL;
g_return_val_if_fail (json_obj != NULL, NULL);
g_return_val_if_fail (array_member != NULL, NULL);
if (json_object_has_member (json_obj, array_member))
arr_node = json_object_get_member (json_obj, array_member);
if (arr_node != NULL && JSON_NODE_HOLDS_ARRAY (arr_node))
{
guint j = 0;
array = json_object_get_array_member (json_obj, array_member);
array = json_node_get_array (arr_node);
if (array == NULL)
return ret;
......
......@@ -66,6 +66,7 @@ test_dup_strv_member (Fixture *f,
g_autoptr(JsonObject) obj = json_object_new ();
g_autoptr(JsonObject) empty = json_object_new ();
g_auto(GStrv) missing = NULL;
g_auto(GStrv) not_array = NULL;
g_auto(GStrv) with_placeholder = NULL;
g_auto(GStrv) without_placeholder = NULL;
......@@ -75,10 +76,14 @@ test_dup_strv_member (Fixture *f,
json_array_add_string_element (arr, "four");
json_node_init_array (arr_node, arr);
json_object_set_member (obj, "arr", g_steal_pointer (&arr_node));
json_object_set_double_member (obj, "not-array", 42.0);
missing = _srt_json_object_dup_strv_member (obj, "missing", NULL);
g_assert_null (missing);
not_array = _srt_json_object_dup_strv_member (obj, "not-array", NULL);
g_assert_null (not_array);
with_placeholder = _srt_json_object_dup_strv_member (obj, "arr", "?!");
g_assert_nonnull (with_placeholder);
g_assert_cmpstr (with_placeholder[0], ==, "one");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment