]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Fix struct initialization in async methods
authorJürg Billeter <j@bitron.ch>
Sun, 21 Mar 2010 22:13:12 +0000 (23:13 +0100)
committerJürg Billeter <j@bitron.ch>
Sun, 21 Mar 2010 22:13:12 +0000 (23:13 +0100)
codegen/valaccodebasemodule.vala

index 0c0e00be1d29615ddafa42311c2bcead6d46fd2a..1beb9fa08f1a36568448d5da07d5b9b2d30ddaad 100644 (file)
@@ -2208,7 +2208,12 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                        closure_struct.add_field (local.variable_type.get_cname (), get_variable_cname (local.name) + local.variable_type.get_cdeclarator_suffix ());
 
                        if (local.initializer != null) {
-                               cfrag.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("data"), get_variable_cname (local.name)), rhs)));
+                               var st = local.variable_type.data_type as Struct;
+                               if (st != null && (!st.is_simple_type () || st.get_cname () == "va_list") && !local.variable_type.nullable && local.initializer is ObjectCreationExpression) {
+                                       cfrag.append (new CCodeExpressionStatement (rhs));
+                               } else {
+                                       cfrag.append (new CCodeExpressionStatement (new CCodeAssignment (new CCodeMemberAccess.pointer (new CCodeIdentifier ("data"), get_variable_cname (local.name)), rhs)));
+                               }
                        }
                } else {
                        CCodeStatement post_stmt = null;