]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Also check array type of variable argument for ref parameters
authorRico Tzschichholz <ricotz@ubuntu.com>
Mon, 1 Feb 2021 07:18:38 +0000 (08:18 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Mon, 1 Feb 2021 07:22:43 +0000 (08:22 +0100)
codegen/valaccodemethodcallmodule.vala

index 11a5b7046fa12c06e45d1c62a08057fa43d9f8cc..bc28f7fd396781b1c0d8b9b60b69d00455dc0592 100644 (file)
@@ -950,9 +950,9 @@ public class Vala.CCodeMethodCallModule : CCodeAssignmentModule {
                        if (unary != null && unary.operator == UnaryOperator.REF) {
                                if (param != null && get_ccode_array_length (param) && param.variable_type is ArrayType
                                    && !((ArrayType) param.variable_type).fixed_length && ((ArrayType) param.variable_type).rank == 1) {
-                                       unowned Symbol? array_var = unary.inner.symbol_reference;
-                                       if (array_var != null && array_var.is_internal_symbol ()
-                                           && (array_var is LocalVariable || array_var is Field)) {
+                                       unowned Variable? array_var = unary.inner.symbol_reference as Variable;
+                                       if ((array_var is LocalVariable || array_var is Field) && array_var.is_internal_symbol ()
+                                           && array_var.variable_type is ArrayType && !((ArrayType) array_var.variable_type).fixed_length) {
                                                ccode.add_assignment (get_array_size_cvalue (unary.inner.target_value), get_array_length_cvalue (unary.inner.target_value, 1));
                                        }
                                }