]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix crash when passing method as argument to dynamic method
authorLuca Bruno <lethalman88@gmail.com>
Sun, 30 May 2010 10:30:07 +0000 (12:30 +0200)
committerJürg Billeter <j@bitron.ch>
Sat, 5 Jun 2010 11:17:26 +0000 (13:17 +0200)
Target type is not set for arguments of dynamic methods.

Fixes bug 620037.

codegen/valaccodedelegatemodule.vala

index 5d297170fc0cc05c6b60ed600bc79e98fabf05f8..e503e6cebb3b7ccd0ccb90cf51b7903633e5faad 100644 (file)
@@ -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;