[glib] GVariantTypeInfo tweaks



commit 6d6d7a8bb2c58b4cce7031e68d31978b2f83e6ff
Author: Ryan Lortie <desrt desrt ca>
Date:   Thu Feb 4 09:04:32 2010 -0500

    GVariantTypeInfo tweaks
    
      1) always emit ending type FIXED for fixed sized items
    
        The serialiser needs to know if it dealing with a fixed sized item
        in case the serialised data is corrupt and the item has the wrong
        size.
    
      2) add a macro that will be used by test cases to check that all
         memory has been freed.

 glib/gvarianttypeinfo.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)
---
diff --git a/glib/gvarianttypeinfo.c b/glib/gvarianttypeinfo.c
index 1e476e4..55caa51 100644
--- a/glib/gvarianttypeinfo.c
+++ b/glib/gvarianttypeinfo.c
@@ -362,10 +362,10 @@ tuple_allocate_members (const GVariantType  *type,
       member->type_info = g_variant_type_info_get (item_type);
       item_type = g_variant_type_next (item_type);
 
-      if (item_type == NULL)
-        member->ending_type = G_VARIANT_MEMBER_ENDING_LAST;
-      else if (member->type_info->fixed_size)
+      if (member->type_info->fixed_size)
         member->ending_type = G_VARIANT_MEMBER_ENDING_FIXED;
+      else if (item_type == NULL)
+        member->ending_type = G_VARIANT_MEMBER_ENDING_LAST;
       else
         member->ending_type = G_VARIANT_MEMBER_ENDING_OFFSET;
     }
@@ -848,3 +848,7 @@ g_variant_type_info_unref (GVariantTypeInfo *info)
         }
     }
 }
+
+/* used from the test cases */
+#define assert_no_type_infos() \
+  g_assert_cmpint (g_hash_table_size (g_variant_type_info_table), ==, 0)



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]