diff options
author | Martin Pitt <martinpitt@gnome.org> | 2012-05-05 12:14:52 -0700 |
---|---|---|
committer | Martin Pitt <martinpitt@gnome.org> | 2012-05-05 14:10:42 -0700 |
commit | 66e39f44fc77523f4241bd5b5b87edcfce2d5df6 (patch) | |
tree | eb2cce82bcc019b9793ba69898ed3ccc3c5efd40 /tests | |
parent | 29cc66db433b83c5dd13c1fae8ddc0464ab5d031 (diff) | |
download | gobject-introspection-66e39f44fc77523f4241bd5b5b87edcfce2d5df6.tar.gz |
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.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/scanner/Regress-1.0-expected.gir | 2 | ||||
-rw-r--r-- | 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 4a1b49ab..81c0a6ba 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.</doc> <doc xml:whitespace="preserve">GClosure which takes one GVariant and returns a GVariant</doc> <type name="GObject.Closure" c:type="GClosure*"/> </parameter> - <parameter name="arg" transfer-ownership="none"> + <parameter name="arg" transfer-ownership="none" allow-none="1"> <doc xml:whitespace="preserve">a GVariant passed as argument to @closure</doc> <type name="GLib.Variant" c:type="GVariant*"/> </parameter> diff --git a/tests/scanner/regress.c b/tests/scanner/regress.c index 27363139..032d07bb 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]); |