]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Free temporary variables used in instance field initializers
authorJürg Billeter <j@bitron.ch>
Sun, 27 Sep 2009 16:27:35 +0000 (18:27 +0200)
committerJürg Billeter <j@bitron.ch>
Sun, 27 Sep 2009 16:27:57 +0000 (18:27 +0200)
codegen/valaccodebasemodule.vala

index ed1eb38a60fe37d3fce91f8a5741e8955f1ab5ba..50fd405a254d0d4812a1dc427e78f54fa60aa20c 100644 (file)
@@ -1030,7 +1030,16 @@ internal class Vala.CCodeBaseModule : CCodeModule {
                                }
 
                                append_temp_decl (instance_init_fragment, temp_vars);
+
+                               foreach (LocalVariable local in temp_ref_vars) {
+                                       var ma = new MemberAccess.simple (local.name);
+                                       ma.symbol_reference = local;
+                                       ma.value_type = local.variable_type.copy ();
+                                       instance_init_fragment.append (new CCodeExpressionStatement (get_unref_expression (get_variable_cexpression (local.name), local.variable_type, ma)));
+                               }
+
                                temp_vars.clear ();
+                               temp_ref_vars.clear ();
                        }
                        
                        if (requires_destroy (f.field_type) && instance_finalize_fragment != null) {