]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix generated code in struct destroy function for array fields
authorJürg Billeter <j@bitron.ch>
Fri, 28 Nov 2008 21:39:15 +0000 (21:39 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Fri, 28 Nov 2008 21:39:15 +0000 (21:39 +0000)
2008-11-28  Jürg Billeter  <j@bitron.ch>

* gobject/valaccodebasemodule.vala:

Fix generated code in struct destroy function for array fields

svn path=/trunk/; revision=2081

ChangeLog
gobject/valaccodebasemodule.vala

index 0dd7d2a3ecb24e32dae1971994d64e5545c85f7f..db37e49c97f803702d1f8bf552ac00828e1e2d8d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-11-28  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodebasemodule.vala:
+
+       Fix generated code in struct destroy function for array fields
+
 2008-11-28  Jürg Billeter  <j@bitron.ch>
 
        * vapigen/valagidlparser.vala:
index 107d321231e9da3766122b7232db374201f215bb..88662c3d60e56bf43346a2c0e3d25f3b75570893 100644 (file)
@@ -854,7 +854,14 @@ public class Vala.CCodeBaseModule : CCodeModule {
                        if (requires_destroy (f.field_type) && instance_finalize_fragment != null) {
                                var this_access = new MemberAccess.simple ("this");
                                this_access.value_type = get_data_type_for_symbol ((TypeSymbol) f.parent_symbol);
-                               this_access.ccodenode = new CCodeIdentifier ("self");
+
+                               var st = f.parent_symbol as Struct;
+                               if (st != null && !st.is_simple_type ()) {
+                                       this_access.ccodenode = new CCodeIdentifier ("(*self)");
+                               } else {
+                                       this_access.ccodenode = new CCodeIdentifier ("self");
+                               }
+
                                var ma = new MemberAccess (this_access, f.name);
                                ma.symbol_reference = f;
                                instance_finalize_fragment.append (new CCodeExpressionStatement (get_unref_expression (lhs, f.field_type, ma)));