From: Jürg Billeter Date: Tue, 16 Dec 2008 19:43:47 +0000 (+0000) Subject: Fix crash and temporary variable declarations when using struct X-Git-Tag: VALA_0_5_3~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=32e5d174fc7332994d6dffacf457b7e682b580c4;p=thirdparty%2Fvala.git Fix crash and temporary variable declarations when using struct 2008-12-16 Jürg Billeter * vala/valafield.vala: * gobject/valaccodebasemodule.vala: Fix crash and temporary variable declarations when using struct initialization methods in field initializer, fixes bug 559459 svn path=/trunk/; revision=2184 --- diff --git a/ChangeLog b/ChangeLog index 5b1b57457..8515a6526 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-12-16 Jürg Billeter + + * vala/valafield.vala: + * gobject/valaccodebasemodule.vala: + + Fix crash and temporary variable declarations when using struct + initialization methods in field initializer, fixes bug 559459 + 2008-12-16 Jürg Billeter * vapigen/valagidlparser.vala: diff --git a/gobject/valaccodebasemodule.vala b/gobject/valaccodebasemodule.vala index 43597cc9f..691fdcb08 100644 --- a/gobject/valaccodebasemodule.vala +++ b/gobject/valaccodebasemodule.vala @@ -893,6 +893,9 @@ public class Vala.CCodeBaseModule : CCodeModule { instance_init_fragment.append (new CCodeExpressionStatement (new CCodeAssignment (array_len_lhs, (CCodeExpression) size.ccodenode))); } } + + append_temp_decl (instance_init_fragment, temp_vars); + temp_vars.clear (); } if (requires_destroy (f.field_type) && instance_finalize_fragment != null) { diff --git a/vala/valafield.vala b/vala/valafield.vala index 56ec66b2d..6c4872b27 100644 --- a/vala/valafield.vala +++ b/vala/valafield.vala @@ -173,6 +173,12 @@ public class Vala.Field : Member, Lockable { lock_used = used; } + public override void replace_expression (Expression old_node, Expression new_node) { + if (initializer == old_node) { + initializer = new_node; + } + } + public override void replace_type (DataType old_type, DataType new_type) { if (field_type == old_type) { field_type = new_type;