From ebb544f549c77d0e98431ee38c55824ff4de81ab Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 3 Oct 2011 14:20:51 +0100 Subject: [PATCH] g_variant_get_data: mention what you need to know to deserialise Also include a shorter version in the docs for g_variant_store, with a pointer to g_variant_get_data. Bug: https://bugzilla.gnome.org/show_bug.cgi?id=632049 Signed-off-by: Simon McVittie Reviewed-by: Ryan Lortie --- glib/gvariant-core.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/glib/gvariant-core.c b/glib/gvariant-core.c index aa31d4835..fab3a1466 100644 --- a/glib/gvariant-core.c +++ b/glib/gvariant-core.c @@ -819,6 +819,16 @@ g_variant_get_size (GVariant *value) * serialisation occurs implicitly and is approximately O(n) in the size * of the result. * + * To deserialise the data returned by this function, in addition to the + * serialised data, you must know the type of the #GVariant, and (if the + * machine might be different) the endianness of the machine that stored + * it. As a result, file formats or network messages that incorporate + * serialised #GVariants must include this information either + * implicitly (for instance "the file always contains a + * %G_VARIANT_TYPE_VARIANT and it is always in little-endian order") or + * explicitly (by storing the type and/or endianness in addition to the + * serialised data). + * * Since: 2.24 **/ gconstpointer @@ -957,6 +967,10 @@ g_variant_get_child_value (GVariant *value, * fully-normalised form if read from an untrusted source. See * g_variant_get_normal_form() for a solution. * + * As with g_variant_get_data(), to be able to deserialise the + * serialised variant successfully, its type and (if the destination + * machine might be different) its endianness must also be available. + * * This function is approximately O(n) in the size of @data. * * Since: 2.24