Free error variable in catch clauses, fixes bug 538331
authorJürg Billeter <j@bitron.ch>
Sun, 15 Jun 2008 22:46:05 +0000 (22:46 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Sun, 15 Jun 2008 22:46:05 +0000 (22:46 +0000)
2008-06-16  Jürg Billeter  <j@bitron.ch>

* vala/valasemanticanalyzer.vala:
* gobject/valaccodegenerator.vala:

Free error variable in catch clauses, fixes bug 538331

svn path=/trunk/; revision=1593

ChangeLog
gobject/valaccodegenerator.vala
vala/valasemanticanalyzer.vala

index 0417be2..24d979b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2008-06-16  Jürg Billeter  <j@bitron.ch>
 
+       * vala/valasemanticanalyzer.vala:
+       * gobject/valaccodegenerator.vala:
+
+       Free error variable in catch clauses, fixes bug 538331
+
+2008-06-16  Jürg Billeter  <j@bitron.ch>
+
        * vala/valaerrortype.vala:
        * vala/valasemanticanalyzer.vala:
        * gobject/valaccodegenerator.vala:
index ceac8b9..4eb0823 100644 (file)
@@ -2477,6 +2477,10 @@ public class Vala.CCodeGenerator : CodeGenerator {
        }
 
        public override void visit_catch_clause (CatchClause clause) {
+               if (clause.error_variable != null) {
+                       clause.error_variable.active = true;
+               }
+
                current_method_inner_error = true;
 
                clause.accept_children (this);
index 6abd6d9..09e9a5c 100644 (file)
@@ -1227,6 +1227,7 @@ public class Vala.SemanticAnalyzer : CodeVisitor {
                        clause.error_variable = new LocalVariable (clause.error_type.copy (), clause.variable_name);
 
                        clause.body.scope.add (clause.variable_name, clause.error_variable);
+                       clause.body.add_local_variable (clause.error_variable);
                } else {
                        clause.error_type = new ErrorType (null, clause.source_reference);
                }