]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Fix detailed signal disconnect in async methods
authorLuca Bruno <lucabru@src.gnome.org>
Mon, 12 Jan 2015 14:09:14 +0000 (15:09 +0100)
committerLuca Bruno <lucabru@src.gnome.org>
Mon, 12 Jan 2015 14:10:21 +0000 (15:10 +0100)
Fixes bug 742621

codegen/valagsignalmodule.vala
tests/Makefile.am
tests/asynchronous/bug742621.vala [new file with mode: 0644]

index 3f8e1ea1e81c6c087dbab28c2ed63969b27d3c27..eff678162add21cf2ecfd40949df5b83abc04b88 100644 (file)
@@ -618,7 +618,7 @@ public class Vala.GSignalModule : GObjectModule {
                        } else {
                                detail_temp_decl = get_temp_variable (gquark_type);
                                emit_temp_var (detail_temp_decl);
-                               parse_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, new CCodeIdentifier (detail_temp_decl.name)));
+                               parse_call.add_argument (new CCodeUnaryExpression (CCodeUnaryOperator.ADDRESS_OF, get_variable_cexpression (detail_temp_decl.name)));
                                parse_call.add_argument (new CCodeConstant ("TRUE"));
                        }
                        ccode.add_expression (parse_call);
index a9bd40fe1371da6ef0e617aed68b9f803d412491..73fe7e366eac0e0d51ba41c5362d48a9984cc351 100644 (file)
@@ -190,6 +190,7 @@ TESTS = \
        asynchronous/bug654336.vala \
        asynchronous/bug654337.vala \
        asynchronous/bug661961.vala \
+       asynchronous/bug742621.vala \
        asynchronous/closures.vala \
        dbus/basic-types.test \
        dbus/arrays.test \
diff --git a/tests/asynchronous/bug742621.vala b/tests/asynchronous/bug742621.vala
new file mode 100644 (file)
index 0000000..1577caf
--- /dev/null
@@ -0,0 +1,15 @@
+class Xyzzy : Object {
+    public bool b { get; set; }
+}
+
+Xyzzy? xyzzy = null;
+
+private void on_b() {
+}
+
+async void go_async() throws Error {
+    xyzzy.notify["b"].disconnect(on_b);
+}
+
+void main () {
+}