diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2022-05-10 18:00:45 +0200 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2022-05-10 18:03:21 +0200 |
commit | af49df1b21849418af6a839519df93eb04e0d827 (patch) | |
tree | 92d7206a2eb19c4d4c4c34e179fc50ee635ae13c /codegen | |
parent | ef23c1bd93e5c4f3e52f87ef98e3cf7a833a18d9 (diff) | |
download | vala-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.vala | 12 |
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) { |