]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
fix crash when using string arrays in parameters of D-Bus methods, fixes
authorJuerg Billeter <j@bitron.ch>
Sun, 6 Apr 2008 19:24:58 +0000 (19:24 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 6 Apr 2008 19:24:58 +0000 (19:24 +0000)
2008-04-06  Juerg Billeter  <j@bitron.ch>

* gobject/valaccodegeneratorinvocationexpression.vala: fix crash
  when using string arrays in parameters of D-Bus methods,
  fixes bug 525166

svn path=/trunk/; revision=1167

ChangeLog
gobject/valaccodegeneratorinvocationexpression.vala

index a90f5bee429cbd175bea14477e5150ffbe9df39a..8c3b47f5138c7d203545a9bc01a35ae3c00b8b5e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-04-06  Jürg Billeter  <j@bitron.ch>
+
+       * gobject/valaccodegeneratorinvocationexpression.vala: fix crash
+         when using string arrays in parameters of D-Bus methods,
+         fixes bug 525166
+
 2008-04-06  Jürg Billeter  <j@bitron.ch>
 
        * gobject/valaccodegenerator.vala,
index 97d952a3ffebc289485465808d287d694c25b604..349766e655ed1772f2e07007f27b3aa3ba882c84 100644 (file)
@@ -174,14 +174,16 @@ public class Vala.CCodeGenerator {
                                                var cdecl = new CCodeDeclaration (param.type_reference.get_cname ());
                                                cdecl.add_declarator (new CCodeVariableDeclarator (param.name));
                                                cb_fun.block.add_statement (cdecl);
-                                               cend_call.add_argument (new CCodeIdentifier (param.type_reference.data_type.get_type_id ()));
-                                               cend_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (param.name)));
                                                if (param.type_reference is ArrayType && ((ArrayType) param.type_reference).element_type.data_type == string_type.data_type) {
                                                        // special case string array
+                                                       cend_call.add_argument (new CCodeIdentifier ("G_TYPE_STRV"));
                                                        var cstrvlen = new CCodeFunctionCall (new CCodeIdentifier ("g_strv_length"));
                                                        cstrvlen.add_argument (new CCodeIdentifier (param.name));
                                                        creply_call.add_argument (cstrvlen);
+                                               } else {
+                                                       cend_call.add_argument (new CCodeIdentifier (param.type_reference.data_type.get_type_id ()));
                                                }
+                                               cend_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (param.name)));
                                                creply_call.add_argument (new CCodeIdentifier (param.name));
                                        }
                                }