summaryrefslogtreecommitdiff
path: root/codegen/valaccodeattribute.vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2017-10-10 14:09:10 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2017-10-10 15:38:54 +0200
commit8a010511b02e165c1c84cd62a13500eaa37e161f (patch)
tree589f5d89e85cd89bf69472bee0b468dfff49ae1d /codegen/valaccodeattribute.vala
parent4a2e3212d2fe502b44d4d299fff33c6060d840f5 (diff)
downloadvala-8a010511b02e165c1c84cd62a13500eaa37e161f.tar.gz
codegen: Prioritize "array_length=true" over "array_null_terminated=true"
If arrays claim to have an array-length and also are null-terminated then use and rely on the given length. Adapt the girparser for this and add "array_length = true" accordingly. https://bugzilla.gnome.org/show_bug.cgi?id=788775
Diffstat (limited to 'codegen/valaccodeattribute.vala')
-rw-r--r--codegen/valaccodeattribute.vala5
1 files changed, 4 insertions, 1 deletions
diff --git a/codegen/valaccodeattribute.vala b/codegen/valaccodeattribute.vala
index 815ec1104..090c76558 100644
--- a/codegen/valaccodeattribute.vala
+++ b/codegen/valaccodeattribute.vala
@@ -523,7 +523,10 @@ public class Vala.CCodeAttribute : AttributeCache {
public bool array_null_terminated {
get {
if (_array_null_terminated == null) {
- if (ccode != null && ccode.has_argument ("array_null_terminated")) {
+ // If arrays claim to have an array-length and also are null-terminated then rely on the given length
+ if (ccode != null && ccode.has_argument ("array_length") && ccode.get_bool ("array_length")) {
+ _array_null_terminated = false;
+ } else if (ccode != null && ccode.has_argument ("array_null_terminated")) {
_array_null_terminated = ccode.get_bool ("array_null_terminated");
} else {
_array_null_terminated = get_default_array_null_terminated ();