From 57c51b746cb25261a05533010042d535a1749520 Mon Sep 17 00:00:00 2001 From: Maxim Ermilov Date: Thu, 17 Feb 2011 23:27:09 +0300 Subject: g_field_info_get_field: return correct pointer for C array Also add a test case. https://bugzilla.gnome.org/show_bug.cgi?id=640468 --- girepository/gifieldinfo.c | 5 ++++- tests/scanner/Regress-1.0-expected.gir | 10 ++++++++++ tests/scanner/regress.h | 5 +++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/girepository/gifieldinfo.c b/girepository/gifieldinfo.c index cf5c2332..b9b56a4d 100644 --- a/girepository/gifieldinfo.c +++ b/girepository/gifieldinfo.c @@ -193,7 +193,10 @@ g_field_info_get_field (GIFieldInfo *field_info, if (g_type_info_is_pointer (type_info)) { - value->v_pointer = G_STRUCT_MEMBER (gpointer, mem, offset); + if (g_type_info_get_array_type (type_info) == GI_ARRAY_TYPE_C) + value->v_pointer = G_STRUCT_MEMBER_P ((mem), (offset)); + else + value->v_pointer = G_STRUCT_MEMBER (gpointer, mem, offset); result = TRUE; } else diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index 2bae748b..07985544 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -886,6 +886,16 @@ TpAccount::status-changed + + + + + + + + + +