summaryrefslogtreecommitdiff
path: root/codegen
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2022-05-10 18:00:45 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2022-05-10 18:03:21 +0200
commitaf49df1b21849418af6a839519df93eb04e0d827 (patch)
tree92d7206a2eb19c4d4c4c34e179fc50ee635ae13c /codegen
parentef23c1bd93e5c4f3e52f87ef98e3cf7a833a18d9 (diff)
downloadvala-af49df1b21849418af6a839519df93eb04e0d827.tar.gz
codegen: Correctly set array-length for NoAccessorMethods properties
If value is a null-terminated array then calculate and set its length. Fixes https://gitlab.gnome.org/GNOME/vala/issues/1316
Diffstat (limited to 'codegen')
-rw-r--r--codegen/valaccodememberaccessmodule.vala12
1 files changed, 12 insertions, 0 deletions
diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala
index 6f01e8a0b..774377752 100644
--- a/codegen/valaccodememberaccessmodule.vala
+++ b/codegen/valaccodememberaccessmodule.vala
@@ -348,7 +348,19 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule {
ccall.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, ctemp));
ccall.add_argument (new CCodeConstant ("NULL"));
ccode.add_expression (ccall);
+
set_cvalue (expr, ctemp);
+
+ if (get_ccode_array_null_terminated (prop)) {
+ requires_array_length = true;
+ var len_call = new CCodeFunctionCall (new CCodeIdentifier ("_vala_array_length"));
+ len_call.add_argument (ctemp);
+
+ var glib_value = (GLibValue) expr.target_value;
+ glib_value.array_length_cvalues = null;
+ glib_value.append_array_length_cvalue (len_call);
+ glib_value.lvalue = false;
+ }
}
if (prop.get_accessor.value_type is GenericType) {