[vala] Fix jump statements with captured variables
- From: Jürg Billeter <juergbi src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [vala] Fix jump statements with captured variables
- Date: Tue, 15 Sep 2009 22:04:01 +0000 (UTC)
commit c6930f6da759aa8991b2fb365415ed8e4b3a3e6f
Author: Jürg Billeter <j bitron ch>
Date: Wed Sep 16 00:02:50 2009 +0200
Fix jump statements with captured variables
codegen/valaccodebasemodule.vala | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/codegen/valaccodebasemodule.vala b/codegen/valaccodebasemodule.vala
index efc3d0b..3c0ef09 100644
--- a/codegen/valaccodebasemodule.vala
+++ b/codegen/valaccodebasemodule.vala
@@ -2576,13 +2576,21 @@ internal class Vala.CCodeBaseModule : CCodeModule {
var local_vars = b.get_local_variables ();
foreach (LocalVariable local in local_vars) {
- if (local.active && !local.floating && requires_destroy (local.variable_type)) {
+ if (local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
cfrag.append (new CCodeExpressionStatement (get_unref_expression (get_variable_cexpression (local.name), local.variable_type, ma)));
}
}
-
+
+ if (b.captured) {
+ int block_id = get_block_id (b);
+
+ var data_unref = new CCodeFunctionCall (new CCodeIdentifier ("block%d_data_unref".printf (block_id)));
+ data_unref.add_argument (new CCodeIdentifier ("_data%d_".printf (block_id)));
+ cfrag.append (new CCodeExpressionStatement (data_unref));
+ }
+
if (stop_at_loop) {
if (b.parent_node is Loop ||
b.parent_node is ForeachStatement ||
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]