summaryrefslogtreecommitdiff
path: root/vala/valamemberaccess.vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2021-02-16 10:33:06 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2021-02-16 10:33:06 +0100
commit830d91188c115a775fc5f383f926b483e9a51249 (patch)
tree178939b1365238b0dd3017ab2971229edb6752f1 /vala/valamemberaccess.vala
parent296d44dd435a1b4f023ea3909589e40568d5b1c7 (diff)
downloadvala-830d91188c115a775fc5f383f926b483e9a51249.tar.gz
vala: Capturing va_list parameters/variables is not allowed
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1136
Diffstat (limited to 'vala/valamemberaccess.vala')
-rw-r--r--vala/valamemberaccess.vala9
1 files changed, 9 insertions, 0 deletions
diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala
index 735f1b79e..368f48c88 100644
--- a/vala/valamemberaccess.vala
+++ b/vala/valamemberaccess.vala
@@ -617,6 +617,11 @@ public class Vala.MemberAccess : Expression {
local.captured = true;
block.captured = true;
+
+ if (local.variable_type.type_symbol == context.analyzer.va_list_type.type_symbol) {
+ error = true;
+ Report.error (source_reference, "Capturing `va_list' variable `%s' is not allowed", local.get_full_name ());
+ }
}
} else if (member is Parameter) {
unowned Parameter param = (Parameter) member;
@@ -640,6 +645,10 @@ public class Vala.MemberAccess : Expression {
error = true;
Report.error (source_reference, "Cannot capture reference or output parameter `%s'", param.get_full_name ());
}
+ if (param.variable_type.type_symbol == context.analyzer.va_list_type.type_symbol) {
+ error = true;
+ Report.error (source_reference, "Capturing `va_list' parameter `%s' is not allowed", param.get_full_name ());
+ }
} else {
unowned PropertyAccessor? acc = param.parent_symbol.parent_symbol as PropertyAccessor;
if (acc != null && acc != context.analyzer.current_method_or_property_accessor && param != acc.prop.this_parameter) {