From: Jürg Billeter Date: Tue, 4 Nov 2008 20:40:29 +0000 (+0000) Subject: Fix crash when using dynamic properties, fixes bug 559304 X-Git-Tag: VALA_0_5_2~131 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fe582a212a75c9ce06a80f2e854280dd0ef7d247;p=thirdparty%2Fvala.git Fix crash when using dynamic properties, fixes bug 559304 2008-11-04 Jürg Billeter * vala/valadynamicproperty.vala: * vala/valaproperty.vala: * vala/valasemanticanalyzer.vala: Fix crash when using dynamic properties, fixes bug 559304 svn path=/trunk/; revision=1980 --- diff --git a/ChangeLog b/ChangeLog index 2b5f5644f..2240b90aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-11-04 Jürg Billeter + + * vala/valadynamicproperty.vala: + * vala/valaproperty.vala: + * vala/valasemanticanalyzer.vala: + + Fix crash when using dynamic properties, fixes bug 559304 + 2008-11-04 Jürg Billeter * gobject/valaccodememberaccessmodule.vala: diff --git a/vala/valadynamicproperty.vala b/vala/valadynamicproperty.vala index e18ebbe3c..cc092c26b 100644 --- a/vala/valadynamicproperty.vala +++ b/vala/valadynamicproperty.vala @@ -40,4 +40,7 @@ public class Vala.DynamicProperty : Property { return new ArrayList (); } + public override bool check (SemanticAnalyzer analyzer) { + return true; + } } diff --git a/vala/valaproperty.vala b/vala/valaproperty.vala index 05c0c95d7..39247b0e4 100644 --- a/vala/valaproperty.vala +++ b/vala/valaproperty.vala @@ -34,7 +34,9 @@ public class Vala.Property : Member, Lockable { get { return _data_type; } set { _data_type = value; - _data_type.parent_node = this; + if (value != null) { + _data_type.parent_node = this; + } } } diff --git a/vala/valasemanticanalyzer.vala b/vala/valasemanticanalyzer.vala index d81f9d223..f803028b2 100644 --- a/vala/valasemanticanalyzer.vala +++ b/vala/valasemanticanalyzer.vala @@ -1683,7 +1683,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { // dynamic property assignment var prop = new DynamicProperty (expr.inner.value_type, expr.member_name, expr.source_reference); prop.access = SymbolAccessibility.PUBLIC; - prop.set_accessor = new PropertyAccessor (false, true, false, null, null); + prop.set_accessor = new PropertyAccessor (false, true, false, null, prop.source_reference); prop.set_accessor.access = SymbolAccessibility.PUBLIC; prop.owner = expr.inner.value_type.data_type.scope; dynamic_object_type.type_symbol.scope.add (null, prop); @@ -1700,7 +1700,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor { prop.property_type = expr.inner.value_type.copy (); } prop.access = SymbolAccessibility.PUBLIC; - prop.get_accessor = new PropertyAccessor (true, false, false, null, null); + prop.get_accessor = new PropertyAccessor (true, false, false, null, prop.source_reference); prop.get_accessor.access = SymbolAccessibility.PUBLIC; prop.owner = expr.inner.value_type.data_type.scope; dynamic_object_type.type_symbol.scope.add (null, prop);