]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
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 f092f086913518fadcc23f3d7ce18cf101a4efd0..eb8b6f605d10a3a37c6a795952b3bf52dabe2be4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+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,
index 298bd4cf7ff5e60ac4091eb28862975ab387cd08..60aa7f9f8bbfa19126fa38de69248a43fe9624bf 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 b8d4dee66e787d49c3eba9516d90586b8abc5083..6f97204f60dd9c7c4f0a0381bd6ec04bb2efa019 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)