// update possible stale _*_size_ variable
if (unary != null && unary.operator == UnaryOperator.REF) {
- if (get_ccode_array_length (param) && param.variable_type is ArrayType
+ if (param != null && get_ccode_array_length (param) && param.variable_type is ArrayType
&& !((ArrayType) param.variable_type).fixed_length && ((ArrayType) param.variable_type).rank == 1) {
unowned Symbol? array_var = unary.inner.symbol_reference;
unowned LocalVariable? array_local = array_var as LocalVariable;
methods/varargs-delegate-without-target.vala \
methods/varargs-gvalue.vala \
methods/varargs-out.vala \
+ methods/varargs-ref.vala \
methods/varargs-struct.vala \
control-flow/assigned-local-variable.vala \
control-flow/break.vala \
--- /dev/null
+void set_foo_varg (string s, ...) {
+ var args = va_list ();
+ string** ref_s1 = args.arg ();
+ *ref_s1 = "bar";
+ string** ref_s2 = args.arg ();
+ *ref_s2 = "manam";
+}
+
+void main () {
+ unowned string bar = "", manam = "";
+ set_foo_varg ("foo", ref bar, ref manam);
+ assert (bar == "bar");
+ assert (manam == "manam");
+}