diff options
-rw-r--r-- | girepository/giobjectinfo.c | 3 | ||||
-rw-r--r-- | tests/repository/gitypelibtest.c | 13 |
2 files changed, 14 insertions, 2 deletions
diff --git a/girepository/giobjectinfo.c b/girepository/giobjectinfo.c index 3b8f64bb..7ba2a93b 100644 --- a/girepository/giobjectinfo.c +++ b/girepository/giobjectinfo.c @@ -819,7 +819,7 @@ _get_func(GIObjectInfo *info, GIObjectInfo *parent_info; gpointer func = NULL; - parent_info = info; + parent_info = g_base_info_ref (info); while (parent_info != NULL) { parents = g_slist_prepend (parents, parent_info); @@ -828,7 +828,6 @@ _get_func(GIObjectInfo *info, for (l = parents; l; l = l->next) { - GIObjectInfoRefFunction func; parent_info = l->data; symbol = getter (parent_info); if (symbol == NULL) diff --git a/tests/repository/gitypelibtest.c b/tests/repository/gitypelibtest.c index 15722a6d..c53eab29 100644 --- a/tests/repository/gitypelibtest.c +++ b/tests/repository/gitypelibtest.c @@ -156,6 +156,18 @@ test_is_pointer_for_struct_arg (GIRepository *repo) g_base_info_unref (variant_info); } +static void +test_fundamental_get_ref_function_pointer (GIRepository *repo) +{ + GIObjectInfo *info; + + g_assert (g_irepository_require (repo, "Regress", NULL, 0, NULL)); + info = g_irepository_find_by_name (repo, "Regress", + "TestFundamentalObject"); + g_object_info_get_ref_function_pointer (info); + g_base_info_unref (info); +} + int main(int argc, char **argv) { @@ -170,6 +182,7 @@ main(int argc, char **argv) test_enum_and_flags_static_methods (repo); test_size_of_gvalue (repo); test_is_pointer_for_struct_arg (repo); + test_fundamental_get_ref_function_pointer (repo); exit(0); } |