From b899bfc7415ec76ef563de3fc945b84675357464 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Mon, 15 Feb 2010 19:11:58 -0500 Subject: [PATCH] GVariant: create child instance from its own data also: white-space fix in the serialiser --- glib/gvariant-core.c | 8 ++++++-- glib/gvariant-serialiser.c | 1 - 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/glib/gvariant-core.c b/glib/gvariant-core.c index 909d071fa..35d792c68 100644 --- a/glib/gvariant-core.c +++ b/glib/gvariant-core.c @@ -800,17 +800,21 @@ g_variant_get_child_value (GVariant *value, }; GVariantSerialised s_child; + /* get the serialiser to extract the serialised data for the child + * from the serialised data for the container + */ s_child = g_variant_serialised_get_child (serialised, index_); + /* create a new serialised instance out of it */ child = g_slice_new (GVariant); child->type_info = s_child.type_info; child->state = (value->state & STATE_TRUSTED) | STATE_SERIALISED; - child->size = serialised.size; + child->size = s_child.size; child->ref_count = 1; child->contents.serialised.buffer = g_buffer_ref (value->contents.serialised.buffer); - child->contents.serialised.data = serialised.data; + child->contents.serialised.data = s_child.data; } else child = g_variant_ref (value->contents.tree.children[index_]); diff --git a/glib/gvariant-serialiser.c b/glib/gvariant-serialiser.c index f92d49bf3..b10e618b2 100644 --- a/glib/gvariant-serialiser.c +++ b/glib/gvariant-serialiser.c @@ -1114,7 +1114,6 @@ gvs_variant_get_child (GVariantSerialised value, /* NOTE: not O(1) and impossible for it to be... */ if (value.size) { - /* find '\0' character */ for (child.size = value.size - 1; child.size; child.size--) if (value.data[child.size] == '\0')