From: Jürg Billeter Date: Fri, 2 Oct 2009 20:11:11 +0000 (+0200) Subject: GAsync: Fix connecting signal handlers in async methods X-Git-Tag: 0.7.8~80 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ca65d7ec727bea515030d0c9293979b2ac1cf188;p=thirdparty%2Fvala.git GAsync: Fix connecting signal handlers in async methods Fixes bug 595755. --- diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala index 2387b127a..8bfcd9ff5 100644 --- a/codegen/valagsignalmodule.vala +++ b/codegen/valagsignalmodule.vala @@ -594,7 +594,7 @@ internal class Vala.GSignalModule : GObjectModule { if (ma.inner != null) { ccall.add_argument ((CCodeExpression) get_ccodenode (ma.inner)); } else { - ccall.add_argument (new CCodeIdentifier ("self")); + ccall.add_argument (get_result_cexpression ("self")); } if (sig is DynamicSignal) { @@ -671,10 +671,10 @@ internal class Vala.GSignalModule : GObjectModule { if (right_ma.inner != null) { ccall.add_argument ((CCodeExpression) right_ma.inner.ccodenode); } else { - ccall.add_argument (new CCodeIdentifier ("self")); + ccall.add_argument (get_result_cexpression ("self")); } } else if (handler is LambdaExpression) { - ccall.add_argument (new CCodeIdentifier ("self")); + ccall.add_argument (get_result_cexpression ("self")); } if (!disconnect && !(sig is DynamicSignal) && in_gobject_instance (m)) { diff --git a/tests/Makefile.am b/tests/Makefile.am index 2696259ce..eb19c7fbd 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -57,6 +57,7 @@ TESTS = \ errors/bug579101.vala \ errors/bug596228.vala \ asynchronous/bug595735.vala \ + asynchronous/bug595755.vala \ asynchronous/bug596177.vala \ dbus/basic-types.test \ dbus/arrays.test \ diff --git a/tests/asynchronous/bug595755.vala b/tests/asynchronous/bug595755.vala new file mode 100644 index 000000000..ac9bbd53b --- /dev/null +++ b/tests/asynchronous/bug595755.vala @@ -0,0 +1,11 @@ +class Foo : Object { + public signal void bar (); + + public async void do_foo () { + bar.connect (() => { + }); + } +} + +void main () { +}