diff options
author | Luca Bruno <lucabru@src.gnome.org> | 2015-01-12 15:09:14 +0100 |
---|---|---|
committer | Luca Bruno <lucabru@src.gnome.org> | 2015-01-12 15:11:02 +0100 |
commit | 71fa41b7cf2a302b8d627a4198b265e4f2305b8d (patch) | |
tree | 1e549701325aa88914a1dfac4c648774b8491aa9 | |
parent | 6b672ea93e26f916b25c0346e575e992ad15d135 (diff) | |
download | vala-71fa41b7cf2a302b8d627a4198b265e4f2305b8d.tar.gz |
codegen: Fix detailed signal disconnect in async methods
Fixes bug 742621
-rw-r--r-- | codegen/valagsignalmodule.vala | 2 | ||||
-rw-r--r-- | tests/Makefile.am | 1 | ||||
-rw-r--r-- | tests/asynchronous/bug742621.vala | 15 |
3 files changed, 17 insertions, 1 deletions
diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala index 3f8e1ea1e..eff678162 100644 --- a/codegen/valagsignalmodule.vala +++ b/codegen/valagsignalmodule.vala @@ -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); diff --git a/tests/Makefile.am b/tests/Makefile.am index 85ca6b351..e505699c7 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -185,6 +185,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 index 000000000..1577cafd9 --- /dev/null +++ b/tests/asynchronous/bug742621.vala @@ -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 () { +} |