[vala] GAsync: Fix connecting signal handlers in async methods



commit ca65d7ec727bea515030d0c9293979b2ac1cf188
Author: Jürg Billeter <j bitron ch>
Date:   Fri Oct 2 22:11:11 2009 +0200

    GAsync: Fix connecting signal handlers in async methods
    
    Fixes bug 595755.

 codegen/valagsignalmodule.vala    |    6 +++---
 tests/Makefile.am                 |    1 +
 tests/asynchronous/bug595755.vala |   11 +++++++++++
 3 files changed, 15 insertions(+), 3 deletions(-)
---
diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala
index 2387b12..8bfcd9f 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 2696259..eb19c7f 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 0000000..ac9bbd5
--- /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 () {
+}



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]