fix crash when using delegates as properties, fixes bug 517499
authorJuerg Billeter <j@bitron.ch>
Sun, 24 Feb 2008 15:43:32 +0000 (15:43 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 24 Feb 2008 15:43:32 +0000 (15:43 +0000)
2008-02-24  Juerg Billeter  <j@bitron.ch>

* vala/valasemanticanalyzer.vala, gobject/valaccodegenerator.vala:
  fix crash when using delegates as properties, fixes bug 517499

svn path=/trunk/; revision=1050

ChangeLog
gobject/valaccodegenerator.vala
vala/valasemanticanalyzer.vala

index f092f08..eb8b6f6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2008-02-24  Jürg Billeter  <j@bitron.ch>
 
+       * vala/valasemanticanalyzer.vala, gobject/valaccodegenerator.vala:
+         fix crash when using delegates as properties, fixes bug 517499
+
+2008-02-24  Jürg Billeter  <j@bitron.ch>
+
        * vala/parser.y, vala/vala.h, vala/valasymbolresolver.vala,
          vala/valaunresolvedsymbol.vala, vala/valaunresolvedtype.vala:
          generalize symbol resolving to fully support inner types
index 298bd4c..60aa7f9 100644 (file)
@@ -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"));
index b8d4dee..6f97204 100644 (file)
@@ -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)