diff options
author | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-02-16 10:33:06 +0100 |
---|---|---|
committer | Rico Tzschichholz <ricotz@ubuntu.com> | 2021-02-16 10:33:06 +0100 |
commit | 830d91188c115a775fc5f383f926b483e9a51249 (patch) | |
tree | 178939b1365238b0dd3017ab2971229edb6752f1 /vala/valamemberaccess.vala | |
parent | 296d44dd435a1b4f023ea3909589e40568d5b1c7 (diff) | |
download | vala-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.vala | 9 |
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) { |