]> 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>
Thu, 2 Apr 2009 13:06:30 +0000 (15:06 +0200)
Fixes bug 577641.

gobject/valaccodemethodmodule.vala

index 5096111d7619a4327aa0ed3cbc504afbbc3d5fc1..fee4a4c7b95d54b49359f9b7498e4c0ce6b35808 100644 (file)
@@ -231,7 +231,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;
                        }