]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Free local variables in GObject constructors
authorJürg Billeter <j@bitron.ch>
Wed, 1 Apr 2009 20:08:31 +0000 (22:08 +0200)
committerJürg Billeter <j@bitron.ch>
Wed, 1 Apr 2009 20:08:31 +0000 (22:08 +0200)
Fixes bug 577641.

gobject/valaccodemethodmodule.vala

index 2a2fd306fe9e2e38a31abf27440d37218d6e114e..bac46ec2b82f36ab622b4af7e157e7f0825070ae 100644 (file)
@@ -269,7 +269,15 @@ internal class Vala.CCodeMethodModule : CCodeStructModule {
                                                cblock.add_statement (stmt.ccodenode);
                                        }
                                }
-                               
+
+                               foreach (LocalVariable local in m.body.get_local_variables ()) {
+                                       if (!local.floating && requires_destroy (local.variable_type)) {
+                                               var ma = new MemberAccess.simple (local.name);
+                                               ma.symbol_reference = local;
+                                               cblock.add_statement (new CCodeExpressionStatement (get_unref_expression (get_variable_cexpression (local.name), local.variable_type, ma)));
+                                       }
+                               }
+
                                m.body.ccodenode = cblock;
                        }