From: Princeton Ferro Date: Fri, 17 Apr 2020 06:45:12 +0000 (-0400) Subject: vala: Ensure non-empty argument list for "disconnect" before accessing it X-Git-Tag: 0.49.1~164 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3f7b5187218dcf51a9ec182114fb104aef97289d;p=thirdparty%2Fvala.git vala: Ensure non-empty argument list for "disconnect" before accessing it Avoids an internal assertion on accessing an empty collection. --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 0593bef60..3476db7b1 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -900,6 +900,7 @@ TESTS = \ semantic/signal-detail-invalid.test \ semantic/signal-detail-non-string.test \ semantic/struct-derived.test \ + semantic/signal-disconnect-empty-invalid.test \ semantic/signal-disconnect-invalid.test \ semantic/signal-return-valist.test \ semantic/struct-field-initializer.test \ diff --git a/tests/semantic/signal-disconnect-empty-invalid.test b/tests/semantic/signal-disconnect-empty-invalid.test new file mode 100644 index 000000000..2830ed975 --- /dev/null +++ b/tests/semantic/signal-disconnect-empty-invalid.test @@ -0,0 +1,10 @@ +Invalid Code + +class Foo : Object { + public signal void bar (); +} + +void main () { + var foo = new Foo (); + foo.bar.disconnect (); +} diff --git a/vala/valamethodcall.vala b/vala/valamethodcall.vala index 98a7a878e..3573113c4 100644 --- a/vala/valamethodcall.vala +++ b/vala/valamethodcall.vala @@ -536,8 +536,7 @@ public class Vala.MethodCall : Expression { unowned Signal? sig = m.parent_symbol as Signal; if (sig != null && m.name == "disconnect") { - var param = argument_list[0]; - if (param is LambdaExpression) { + if (!argument_list.is_empty && argument_list[0] is LambdaExpression) { error = true; Report.error (source_reference, "Cannot disconnect lambda expression from signal"); return false;