[glib] GVariant: create child instance from its own data
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib] GVariant: create child instance from its own data
- Date: Tue, 16 Feb 2010 00:38:13 +0000 (UTC)
commit b899bfc7415ec76ef563de3fc945b84675357464
Author: Ryan Lortie <desrt desrt ca>
Date: Mon Feb 15 19:11:58 2010 -0500
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 909d071..35d792c 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 f92d49b..b10e618 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')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]