From: Jürg Billeter Date: Sun, 21 Mar 2010 15:33:44 +0000 (+0100) Subject: GAsync: Fix async methods with struct parameters X-Git-Tag: 0.8.0~104 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=df2b1aef63399d722b9ffd0b8db41d08e88557ef;p=thirdparty%2Fvala.git GAsync: Fix async methods with struct parameters Fixes bug 613484. --- diff --git a/codegen/valagasyncmodule.vala b/codegen/valagasyncmodule.vala index c1212de10..e6ffb0d6c 100644 --- a/codegen/valagasyncmodule.vala +++ b/codegen/valagasyncmodule.vala @@ -1,6 +1,6 @@ /* valagasyncmodule.vala * - * Copyright (C) 2008-2009 Jürg Billeter + * Copyright (C) 2008-2010 Jürg Billeter * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -219,6 +219,8 @@ internal class Vala.GAsyncModule : GSignalModule { var ma = new MemberAccess.simple (param.name); ma.symbol_reference = param; cparam = get_ref_cexpression (param.parameter_type, cparam, ma, param); + } else if (param.parameter_type.is_real_non_null_struct_type ()) { + cparam = new CCodeUnaryExpression (CCodeUnaryOperator.POINTER_INDIRECTION, cparam); } asyncblock.add_statement (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (data_var, get_variable_cname (param.name)), cparam))); diff --git a/tests/Makefile.am b/tests/Makefile.am index dbad7ba04..b746e19c8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -77,6 +77,7 @@ TESTS = \ asynchronous/bug599568.vala \ asynchronous/bug600827.vala \ asynchronous/bug601558.vala \ + asynchronous/bug613484.vala \ dbus/basic-types.test \ dbus/arrays.test \ dbus/structs.test \ diff --git a/tests/asynchronous/bug613484.vala b/tests/asynchronous/bug613484.vala new file mode 100644 index 000000000..581686f62 --- /dev/null +++ b/tests/asynchronous/bug613484.vala @@ -0,0 +1,12 @@ +struct Foo { + int i; +} + +void do_foo (Foo foo) { +} + +async void do_foo_async (Foo foo) { +} + +void main () { +}