]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix crash when using multi-dimensional arrays, patch by Amos Brocco, fixes
authorJürg Billeter <j@bitron.ch>
Tue, 22 Jul 2008 14:50:59 +0000 (14:50 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Tue, 22 Jul 2008 14:50:59 +0000 (14:50 +0000)
2008-07-22  Jürg Billeter  <j@bitron.ch>

* gobject/valaccodearraycreationexpressionbinding.vala:

Fix crash when using multi-dimensional arrays,
patch by Amos Brocco, fixes bug 544145

svn path=/trunk/; revision=1721

ChangeLog
THANKS
gobject/valaccodearraycreationexpressionbinding.vala

index bfdba0eef1a0e815e901219356007a30d0b8a7ca..612755079a8cce95458cd5742fdd63638a3746f6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-07-22  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodearraycreationexpressionbinding.vala:
+
+       Fix crash when using multi-dimensional arrays,
+       patch by Amos Brocco, fixes bug 544145
+
 2008-07-22  Jürg Billeter  <j@bitron.ch>
 
        * vala/valaparser.vala:
diff --git a/THANKS b/THANKS
index 0671c84a3a5770b3e5346a81b0b41229a600e7b9..450afa99e5fe7a6257ec60539e8cbeb0d45d4f99 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -3,6 +3,7 @@ The Vala team would like to thank the following contributors:
 Alberto Ruiz
 Alexandre Moreira
 Ali Sabil
+Amos Brocco
 Andrea Del Signore
 Andreas Brauchli
 Arwed von Merkatz
index b002fd83990cf9fd3d4d5d1652e795ce92b5eb18..4db9a3fb20c85bca0989a0d0733105d7a89cdc66 100644 (file)
@@ -44,6 +44,8 @@ public class Vala.CCodeArrayCreationExpressionBinding : CCodeExpressionBinding {
                gnew.add_argument (new CCodeIdentifier (expr.element_type.get_cname ()));
                bool first = true;
                CCodeExpression cexpr = null;
+
+               // iterate over each dimension
                foreach (Expression size in expr.get_sizes ()) {
                        CCodeExpression csize = (CCodeExpression) size.ccodenode;
 
@@ -57,11 +59,6 @@ public class Vala.CCodeArrayCreationExpressionBinding : CCodeExpressionBinding {
                                csize = new CCodeParenthesizedExpression (new CCodeAssignment (name_cnode, csize));
                        }
 
-                       if (expr.element_type.data_type != null && expr.element_type.data_type.is_reference_type ()) {
-                               // add extra item to have array NULL-terminated for all reference types
-                               csize = new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, csize, new CCodeConstant ("1"));
-                       }
-
                        if (first) {
                                cexpr = csize;
                                first = false;
@@ -69,6 +66,12 @@ public class Vala.CCodeArrayCreationExpressionBinding : CCodeExpressionBinding {
                                cexpr = new CCodeBinaryExpression (CCodeBinaryOperator.MUL, cexpr, csize);
                        }
                }
+               
+               // add extra item to have array NULL-terminated for all reference types
+               if (expr.element_type.data_type != null && expr.element_type.data_type.is_reference_type ()) {
+                       cexpr = new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, cexpr, new CCodeConstant ("1"));
+               }
+               
                gnew.add_argument (cexpr);
 
                if (expr.initializer_list != null) {