]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix private array fields in structs, fixes bug 557174
authorJürg Billeter <j@bitron.ch>
Tue, 16 Dec 2008 23:38:56 +0000 (23:38 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Tue, 16 Dec 2008 23:38:56 +0000 (23:38 +0000)
2008-12-17  Jürg Billeter  <j@bitron.ch>

* gobject/valaccodearraymodule.vala:

Fix private array fields in structs, fixes bug 557174

svn path=/trunk/; revision=2197

ChangeLog
gobject/valaccodearraymodule.vala

index 508ad602ab8ba7edba74606a16528cfead4c87ea..90cb3a25de0ba4039dcc7ac7ebc6fd31b63a6d08 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-12-17  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodearraymodule.vala:
+
+       Fix private array fields in structs, fixes bug 557174
+
 2008-12-16  Jürg Billeter  <j@bitron.ch>
 
        * configure.ac: Post-release version bump
index 9f8edb7fdcdb41eca6d7baa5be78984ef0e4d3c4..0e8df1979111848503b7f4f58023a3bb4e8a8a15 100644 (file)
@@ -172,16 +172,14 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule {
                                        CCodeExpression length_expr = null;
 
                                        if (field.binding == MemberBinding.INSTANCE) {
-                                               TypeSymbol base_type = null;
-                                               if (ma.inner.value_type != null) {
-                                                       base_type = ma.inner.value_type.data_type;
-                                               }
+                                               var cl = field.parent_symbol as Class;
+                                               bool is_gtypeinstance = (cl != null && !cl.is_compact);
 
                                                var length_cname = get_array_length_cname (field.name, dim);
                                                CCodeExpression typed_inst = (CCodeExpression) get_ccodenode (ma.inner);
 
                                                CCodeExpression inst;
-                                               if (field.access == SymbolAccessibility.PRIVATE) {
+                                               if (is_gtypeinstance && field.access == SymbolAccessibility.PRIVATE) {
                                                        inst = new CCodeMemberAccess.pointer (typed_inst, "priv");
                                                } else {
                                                        inst = typed_inst;