]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
codegen: Move freeing of locals to append_scope_free method
authorJürg Billeter <j@bitron.ch>
Fri, 29 Apr 2011 20:31:27 +0000 (22:31 +0200)
committerJürg Billeter <j@bitron.ch>
Fri, 29 Apr 2011 20:34:17 +0000 (22:34 +0200)
codegen/valaccodebasemodule.vala
codegen/valagerrormodule.vala

index f963c49b459c1497abb0c3972dda73c20319e6f1..64aebb8a74bba048e2470e05bdda933a9e0f405e 100644 (file)
@@ -3250,7 +3250,7 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                temp_ref_vars.clear ();
        }
 
-       public virtual void append_local_free (Symbol sym, bool stop_at_loop = false, CodeNode? stop_at = null) {
+       protected virtual void append_scope_free (Symbol sym, CodeNode? stop_at = null) {
                var b = (Block) sym;
 
                var local_vars = b.get_local_variables ();
@@ -3270,6 +3270,10 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                        ccode.add_expression (data_unref);
                        ccode.add_assignment (get_variable_cexpression ("_data%d_".printf (block_id)), new CCodeConstant ("NULL"));
                }
+       }
+
+       public void append_local_free (Symbol sym, bool stop_at_loop = false, CodeNode? stop_at = null) {
+               var b = (Block) sym;
 
                append_scope_free (sym, stop_at);
 
@@ -3292,9 +3296,6 @@ public abstract class Vala.CCodeBaseModule : CodeGenerator {
                }
        }
 
-       protected virtual void append_scope_free (Symbol sym, CodeNode? stop_at = null) {
-       }
-
        private void append_param_free (Method m) {
                foreach (Parameter param in m.get_parameters ()) {
                        if (!param.ellipsis && requires_destroy (param.variable_type) && param.direction == ParameterDirection.IN) {
index 157778b63ba5f948357ef6fbc19a089c201b5f81..848363614b58d75f066ceb71efaccccbaea16d53 100644 (file)
@@ -362,6 +362,8 @@ public class Vala.GErrorModule : CCodeDelegateModule {
        }
 
        protected override void append_scope_free (Symbol sym, CodeNode? stop_at = null) {
+               base.append_scope_free (sym, stop_at);
+
                if (!(stop_at is TryStatement || stop_at is CatchClause)) {
                        var finally_block = (Block) null;
                        if (sym.parent_node is TryStatement) {