diff options
-rw-r--r-- | girepository/gifieldinfo.c | 8 |
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; |