data.add_field ("GDestroyNotify", get_delegate_target_destroy_notify_cname (get_variable_cname (local.name)));
}
}
-
+ }
+ }
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
+ if (local.captured) {
if (requires_destroy (local.variable_type)) {
bool old_coroutine = false;
if (current_method != null) {
}
}
- foreach (LocalVariable local in local_vars) {
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
if (!local.unreachable && !local.floating && !local.captured && requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
var b = (Block) sym;
var local_vars = b.get_local_variables ();
- foreach (LocalVariable local in local_vars) {
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
if (!local.unreachable && local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
var b = (Block) sym;
var local_vars = b.get_local_variables ();
- foreach (LocalVariable local in local_vars) {
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
if (!local.unreachable && local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
generate_type_declaration (local.variable_type, source_declarations);
data.add_field (local.variable_type.get_cname (), get_variable_cname (local.name) + local.variable_type.get_cdeclarator_suffix ());
-
+ }
+ }
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
+ if (local.captured) {
if (requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
}
}
- foreach (LocalVariable local in local_vars) {
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
if (!local.floating && !local.captured && requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
var b = (Block) sym;
var local_vars = b.get_local_variables ();
- foreach (LocalVariable local in local_vars) {
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
if (local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;
var b = (Block) sym;
var local_vars = b.get_local_variables ();
- foreach (LocalVariable local in local_vars) {
+ // free in reverse order
+ for (int i = local_vars.size - 1; i >= 0; i--) {
+ var local = local_vars[i];
if (local.active && !local.floating && !local.captured && requires_destroy (local.variable_type)) {
var ma = new MemberAccess.simple (local.name);
ma.symbol_reference = local;