diff options
Diffstat (limited to 'codegen/valaccodearraymodule.vala')
-rw-r--r-- | codegen/valaccodearraymodule.vala | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/codegen/valaccodearraymodule.vala b/codegen/valaccodearraymodule.vala index 2b78bbc7d..ea227f285 100644 --- a/codegen/valaccodearraymodule.vala +++ b/codegen/valaccodearraymodule.vala @@ -704,14 +704,22 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { } string ctypename = get_ccode_name (param.variable_type); + string name = get_variable_cname (param.name); + var array_type = (ArrayType) param.variable_type; if (param.direction != ParameterDirection.IN) { ctypename += "*"; } - var main_cparam = new CCodeParameter (get_variable_cname (param.name), ctypename); + if (array_type.inline_allocated) { + if (param.direction != ParameterDirection.IN) { + ctypename += "*"; + } else { + name += "[]"; + } + } - var array_type = (ArrayType) param.variable_type; + var main_cparam = new CCodeParameter (name, ctypename); generate_type_declaration (array_type.element_type, decl_space); @@ -720,7 +728,7 @@ public class Vala.CCodeArrayModule : CCodeMethodCallModule { carg_map.set (get_param_pos (get_ccode_pos (param)), get_variable_cexpression (param.name)); } - if (get_ccode_array_length (param)) { + if (!array_type.fixed_length && get_ccode_array_length (param)) { string length_ctype = "int"; if (get_ccode_array_length_type (param) != null) { length_ctype = get_ccode_array_length_type (param); |