From: Juerg Billeter Date: Sun, 24 Feb 2008 15:43:32 +0000 (+0000) Subject: fix crash when using delegates as properties, fixes bug 517499 X-Git-Tag: VALA_0_1_7~41 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab71831811f9cf830a28811ffbed4cb3cdcadf9d;p=thirdparty%2Fvala.git fix crash when using delegates as properties, fixes bug 517499 2008-02-24 Juerg Billeter * vala/valasemanticanalyzer.vala, gobject/valaccodegenerator.vala: fix crash when using delegates as properties, fixes bug 517499 svn path=/trunk/; revision=1050 --- diff --git a/ChangeLog b/ChangeLog index f092f0869..eb8b6f605 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-02-24 Jürg Billeter + + * vala/valasemanticanalyzer.vala, gobject/valaccodegenerator.vala: + fix crash when using delegates as properties, fixes bug 517499 + 2008-02-24 Jürg Billeter * vala/parser.y, vala/vala.h, vala/valasymbolresolver.vala, diff --git a/gobject/valaccodegenerator.vala b/gobject/valaccodegenerator.vala index 298bd4cf7..60aa7f9f8 100644 --- a/gobject/valaccodegenerator.vala +++ b/gobject/valaccodegenerator.vala @@ -677,7 +677,7 @@ public class Vala.CCodeGenerator : CodeGenerator { block.add_statement (new CCodeExpressionStatement (ccall)); // HACK: decrement the refcount before returning the value to simulate a weak reference getter function - if (prop.type_reference.data_type.is_reference_counting ()) { + if (prop.type_reference.data_type != null && prop.type_reference.data_type.is_reference_counting ()) { var unref_cond = new CCodeBinaryExpression (CCodeBinaryOperator.INEQUALITY, new CCodeIdentifier ("value"), new CCodeConstant ("NULL")); var unref_function = new CCodeFunctionCall (get_destroy_func_expression (prop.type_reference)); unref_function.add_argument (new CCodeIdentifier ("value")); diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index b8d4dee66..6f97204f6 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -598,6 +598,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { * Reference counting types can simulate to return a weak * reference */ if ((prop.is_abstract || prop.is_virtual) && + prop.type_reference.data_type != null && prop.type_reference.data_type.is_reference_type () && !prop.type_reference.data_type.is_reference_counting () && !prop.type_reference.transfers_ownership)