]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
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 0417be272187e1cf1f51cdc8ff091b6d3b7c8ee0..24d979bcde22da55e10e071e0ef74a750c79dbb8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+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:
index ceac8b9cc3fe20be54e8e635f28c0ee8f136596f..4eb08233120b2dd612500af012089cc7bd7ddc30 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 6abd6d9cf36b94a3ae36e293a920cbf77c0c1733..09e9a5cc63fca4d19e0ed0c868fd2a9520a1f8d0 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);
                }