From 66e39f44fc77523f4241bd5b5b87edcfce2d5df6 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Sat, 5 May 2012 12:14:52 -0700 Subject: [PATCH] Fix regress_test_closure_variant return value We need to g_variant_ref() the return type: the closure delivers it wrapped in a GValue, and the subsequent g_value_unset() unrefs it to zero otherwise. This was uncovered by the now working TestClosures.test_variant() test case in PyGObject. Also allow passing NULL as argument, to be able to test these code paths as well. --- tests/scanner/Regress-1.0-expected.gir | 2 +- tests/scanner/regress.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/scanner/Regress-1.0-expected.gir b/tests/scanner/Regress-1.0-expected.gir index 4a1b49a..81c0a6b 100644 --- a/tests/scanner/Regress-1.0-expected.gir +++ b/tests/scanner/Regress-1.0-expected.gir @@ -2129,7 +2129,7 @@ call and can be released on return. GClosure which takes one GVariant and returns a GVariant - + a GVariant passed as argument to @closure diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c index 2736313..032d07b 100644 --- a/tests/scanner/regress.c +++ b/tests/scanner/regress.c @@ -216,7 +216,7 @@ regress_test_closure_one_arg (GClosure *closure, int arg) /** * regress_test_closure_variant: * @closure: GClosure which takes one GVariant and returns a GVariant - * @arg: (transfer none): a GVariant passed as argument to @closure + * @arg: (allow-none) (transfer none): a GVariant passed as argument to @closure * * Return value: (transfer full): the return value of @closure */ @@ -238,6 +238,8 @@ regress_test_closure_variant (GClosure *closure, GVariant* arg) NULL); ret = g_value_get_variant (&return_value); + if (ret != NULL) + g_variant_ref (ret); g_value_unset (&return_value); g_value_unset (&arguments[0]); -- 2.7.4