From: Luca Bruno Date: Sun, 30 May 2010 10:30:07 +0000 (+0200) Subject: Fix crash when passing method as argument to dynamic method X-Git-Tag: 0.9.1~10 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2312811ae6fac928aa4ddbe40e1e20001459bc35;p=thirdparty%2Fvala.git Fix crash when passing method as argument to dynamic method Target type is not set for arguments of dynamic methods. Fixes bug 620037. --- diff --git a/codegen/valaccodedelegatemodule.vala b/codegen/valaccodedelegatemodule.vala index 5d297170f..e503e6ceb 100644 --- a/codegen/valaccodedelegatemodule.vala +++ b/codegen/valaccodedelegatemodule.vala @@ -309,8 +309,8 @@ public class Vala.CCodeDelegateModule : CCodeArrayModule { } } else { var delegate_target = (CCodeExpression) get_ccodenode (ma.inner); - var delegate_type = (DelegateType) delegate_expr.target_type; - if ((expr_owned || delegate_type.is_called_once) && ma.inner.value_type.data_type != null && ma.inner.value_type.data_type.is_reference_counting ()) { + var delegate_type = delegate_expr.target_type as DelegateType; + if ((expr_owned || (delegate_type != null && delegate_type.is_called_once)) && ma.inner.value_type.data_type != null && ma.inner.value_type.data_type.is_reference_counting ()) { var ref_call = new CCodeFunctionCall (get_dup_func_expression (ma.inner.value_type, delegate_expr.source_reference)); ref_call.add_argument (delegate_target); delegate_target = ref_call;