From: Luca Bruno Date: Thu, 12 May 2011 13:53:26 +0000 (+0200) Subject: codegen: Don't spit out critical when returning unowned delegate X-Git-Tag: 0.12.1~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=60aa75e904c59a4f22502af3d644ab686a5f1d64;p=thirdparty%2Fvala.git codegen: Don't spit out critical when returning unowned delegate --- diff --git a/codegen/valaccodemethodcallmodule.vala b/codegen/valaccodemethodcallmodule.vala index f7abf5ebd..7e384f324 100644 --- a/codegen/valaccodemethodcallmodule.vala +++ b/codegen/valaccodemethodcallmodule.vala @@ -518,7 +518,11 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule { out_arg_map.set (get_param_pos (m.cdelegate_target_parameter_position + 0.01), new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, temp_ref)); set_delegate_target_destroy_notify (expr, temp_ref); + } else { + set_delegate_target_destroy_notify (expr, new CCodeConstant ("NULL")); } + } else { + set_delegate_target (expr, new CCodeConstant ("NULL")); } } diff --git a/tests/delegates/delegates.vala b/tests/delegates/delegates.vala index e80fd3fe8..ca5a98ac7 100644 --- a/tests/delegates/delegates.vala +++ b/tests/delegates/delegates.vala @@ -68,6 +68,10 @@ class Maman.Bar : Object, Foo { call_instance_delegate (bar.foo_method); } + static unowned Maman.VoidCallback test_unowned_delegate_return () { + return () => {}; + } + public static int main () { stdout.printf ("Delegate Test: 1"); @@ -97,6 +101,8 @@ class Maman.Bar : Object, Foo { test_delegates_interface_method (); + var baz = test_unowned_delegate_return (); + return 0; } }