[vala] NULL-terminate array copies



commit 1ca4c853606a2b2c922903c4fc3c1d09a3cac1af
Author: Jürg Billeter <j bitron ch>
Date:   Sun Dec 13 17:31:29 2009 +0100

    NULL-terminate array copies

 codegen/valaccodearraymodule.vala |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
---
diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala
index 0d745b0..e1ef010 100644
--- a/codegen/valaccodearraymodule.vala
+++ b/codegen/valaccodearraymodule.vala
@@ -735,7 +735,14 @@ internal class Vala.CCodeArrayModule : CCodeMethodCallModule {
 			cdecl.add_declarator (cvardecl);
 			var gnew = new CCodeFunctionCall (new CCodeIdentifier ("g_new0"));
 			gnew.add_argument (new CCodeIdentifier (array_type.element_type.get_cname ()));
-			gnew.add_argument (new CCodeIdentifier ("length"));
+
+			CCodeExpression length_expr = new CCodeIdentifier ("length");
+			// add extra item to have array NULL-terminated for all reference types
+			if (array_type.element_type.data_type != null && array_type.element_type.data_type.is_reference_type ()) {
+				length_expr = new CCodeBinaryExpression (CCodeBinaryOperator.PLUS, length_expr, new CCodeConstant ("1"));
+			}
+			gnew.add_argument (length_expr);
+
 			cvardecl.initializer = gnew;
 			block.add_statement (cdecl);
 



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