summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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;