summaryrefslogtreecommitdiff
path: root/codegen/valaccodearraymodule.vala
diff options
context:
space:
mode:
Diffstat (limited to 'codegen/valaccodearraymodule.vala')
-rw-r--r--codegen/valaccodearraymodule.vala14
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);