Assume only that an array is embedded in a struct if it's fixed size
authorTomeu Vizoso <tomeu.vizoso@collabora.co.uk>
Mon, 6 Jun 2011 18:06:54 +0000 (20:06 +0200)
committerTomeu Vizoso <tomeu.vizoso@collabora.co.uk>
Mon, 6 Jun 2011 18:13:50 +0000 (20:13 +0200)
girepository/gifieldinfo.c

index eb0b6b2b72164354a645b9858cdf1319abbd2871..106fc1ce91af26fd2df53379e102f59c5b819cef 100644 (file)
@@ -193,8 +193,12 @@ g_field_info_get_field (GIFieldInfo *field_info,
 
   if (g_type_info_is_pointer (type_info))
     {
-      if (g_type_info_get_array_type (type_info) == GI_ARRAY_TYPE_C)
-       value->v_pointer = G_STRUCT_MEMBER_P ((mem), (offset));
+      if (g_type_info_get_array_type (type_info) == GI_ARRAY_TYPE_C &&
+          g_type_info_get_array_fixed_size (type_info) >= 0)
+        {
+          /* Consider fixed-size arrays as embedded inside the struct */
+         value->v_pointer = G_STRUCT_MEMBER_P ((mem), (offset));
+       }
       else
        value->v_pointer = G_STRUCT_MEMBER (gpointer, mem, offset);
       result = TRUE;