vala r1721 - in trunk: . gobject



Author: juergbi
Date: Tue Jul 22 14:50:59 2008
New Revision: 1721
URL: http://svn.gnome.org/viewvc/vala?rev=1721&view=rev

Log:
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


Modified:
   trunk/ChangeLog
   trunk/THANKS
   trunk/gobject/valaccodearraycreationexpressionbinding.vala

Modified: trunk/THANKS
==============================================================================
--- trunk/THANKS	(original)
+++ trunk/THANKS	Tue Jul 22 14:50:59 2008
@@ -3,6 +3,7 @@
 Alberto Ruiz
 Alexandre Moreira
 Ali Sabil
+Amos Brocco
 Andrea Del Signore
 Andreas Brauchli
 Arwed von Merkatz

Modified: trunk/gobject/valaccodearraycreationexpressionbinding.vala
==============================================================================
--- trunk/gobject/valaccodearraycreationexpressionbinding.vala	(original)
+++ trunk/gobject/valaccodearraycreationexpressionbinding.vala	Tue Jul 22 14:50:59 2008
@@ -44,6 +44,8 @@
 		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 @@
 				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 @@
 				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) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]