summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu.vizoso@collabora.co.uk>2011-06-06 20:06:54 +0200
committerTomeu Vizoso <tomeu.vizoso@collabora.co.uk>2011-06-06 20:13:50 +0200
commit480dac7364c7c42d977a7a94322a0725c6c5054a (patch)
tree37e2b50b7f4fcf434ef14fe49c73e8e0cdd2a78a
parent3e0292cd66752489d5b05bed57abffec0315b3ae (diff)
downloadgobject-introspection-480dac7364c7c42d977a7a94322a0725c6c5054a.tar.gz
Assume only that an array is embedded in a struct if it's fixed size
-rw-r--r--girepository/gifieldinfo.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/girepository/gifieldinfo.c b/girepository/gifieldinfo.c
index eb0b6b2b..106fc1ce 100644
--- a/girepository/gifieldinfo.c
+++ b/girepository/gifieldinfo.c
@@ -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;