]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Use correctly typed array-length variable for property-getter d33e9fbca63674b7dfa339c25a9d5e27cce187f3
authorRico Tzschichholz <ricotz@ubuntu.com>
Tue, 17 Mar 2020 14:26:36 +0000 (15:26 +0100)
committerRico Tzschichholz <ricotz@ubuntu.com>
Tue, 17 Mar 2020 14:35:01 +0000 (15:35 +0100)
codegen/valaccodememberaccessmodule.vala

index 97e0c48fda0c4047b22d7c4d4f511668eb71473d..50bd4f12172944b07a6ce01b8687ad406cb2e7c2 100644 (file)
@@ -289,7 +289,12 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
                                                        ccode.add_assignment (temp_value.array_length_cvalues[0], len_call);
                                                } else if (get_ccode_array_length (prop)) {
                                                        for (int dim = 1; dim <= array_type.rank; dim++) {
-                                                               ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_array_length_cvalue (temp_value, dim)));
+                                                               var length_ctype = get_ccode_array_length_type (prop) ?? get_ccode_array_length_type (array_type);
+                                                               var temp_var = get_temp_variable (new CType (length_ctype, "0"), true, null, true);
+                                                               var temp_ref = get_variable_cexpression (temp_var.name);
+                                                               emit_temp_var (temp_var);
+                                                               ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, temp_ref));
+                                                               ccode.add_assignment (temp_value.array_length_cvalues[dim - 1], temp_ref);
                                                        }
                                                }
                                        } else {