From: Will Szumski Date: Mon, 24 Feb 2014 15:03:24 +0000 (+0000) Subject: girwriter: Don't add target for delegates without target X-Git-Tag: 0.24.0~24 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=978d0fa6ae0231ffdeb1cc8115ecb367992affbd;p=thirdparty%2Fvala.git girwriter: Don't add target for delegates without target Fixes bug 725073. --- diff --git a/codegen/valagirwriter.vala b/codegen/valagirwriter.vala index f6da0add6..f3d51003b 100644 --- a/codegen/valagirwriter.vala +++ b/codegen/valagirwriter.vala @@ -814,12 +814,14 @@ public class Vala.GIRWriter : CodeVisitor { var int_type = new IntegerType (CodeContext.get ().root.scope.lookup ("int") as Struct); write_param_or_return (int_type, true, ref index, has_array_length, "%s_length1".printf (name), null, direction); } else if (type is DelegateType) { - var data_type = new PointerType (new VoidType ()); - write_param_or_return (data_type, true, ref index, false, "%s_target".printf (name), null, direction); var deleg_type = (DelegateType) type; - if (deleg_type.is_disposable ()) { - var notify_type = new DelegateType (CodeContext.get ().root.scope.lookup ("GLib").scope.lookup ("DestroyNotify") as Delegate); - write_param_or_return (notify_type, true, ref index, false, "%s_target_destroy_notify".printf (name), null, direction); + if (deleg_type.delegate_symbol.has_target) { + var data_type = new PointerType (new VoidType ()); + write_param_or_return (data_type, true, ref index, false, "%s_target".printf (name), null, direction); + if (deleg_type.is_disposable ()) { + var notify_type = new DelegateType (CodeContext.get ().root.scope.lookup ("GLib").scope.lookup ("DestroyNotify") as Delegate); + write_param_or_return (notify_type, true, ref index, false, "%s_target_destroy_notify".printf (name), null, direction); + } } } }