diff options
author | Garrett Regier <garrettregier@gmail.com> | 2016-10-20 19:44:09 -0700 |
---|---|---|
committer | Garrett Regier <garrettregier@gmail.com> | 2017-06-16 17:16:32 -0700 |
commit | d78ad648942637fb9212d1d93670509d4c7f687b (patch) | |
tree | e1e2fe26f63d2d12446fee7aa291f1363e84ec6d /json-glib/json-generator.c | |
parent | 7b3c405df41c0b6f6fe58fdb05c922614f08c4c4 (diff) | |
download | json-glib-d78ad648942637fb9212d1d93670509d4c7f687b.tar.gz |
core: Avoid json_object_get_members()
Use JsonObject's private members_ordered
GQueue instead. This avoids a g_list_copy().
https://bugzilla.gnome.org/show_bug.cgi?id=773504
Diffstat (limited to 'json-glib/json-generator.c')
-rw-r--r-- | json-glib/json-generator.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/json-glib/json-generator.c b/json-glib/json-generator.c index 6a9aff4..0afe881 100644 --- a/json-glib/json-generator.c +++ b/json-glib/json-generator.c @@ -426,7 +426,8 @@ dump_object (JsonGenerator *generator, JsonObject *object) { JsonGeneratorPrivate *priv = generator->priv; - GList *members, *l; + GQueue *members; + GList *l; gboolean pretty = priv->pretty; guint indent = priv->indent; guint i; @@ -436,9 +437,9 @@ dump_object (JsonGenerator *generator, if (pretty) g_string_append_c (buffer, '\n'); - members = json_object_get_members (object); + members = json_object_get_members_internal (object); - for (l = members; l != NULL; l = l->next) + for (l = members->head; l != NULL; l = l->next) { const gchar *member_name = l->data; JsonNode *cur = json_object_get_member (object, member_name); @@ -452,8 +453,6 @@ dump_object (JsonGenerator *generator, g_string_append_c (buffer, '\n'); } - g_list_free (members); - if (pretty) { for (i = 0; i < (level * indent); i++) |