aboutsummaryrefslogtreecommitdiff
path: root/src/actualize.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2025-01-16 08:27:51 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2025-01-16 08:27:51 +0200
commit2841470fd34a6ed41df94f925bbeb95819bfca9a (patch)
treea13434519f5c0222f2b0c80a4d13738eb17f8200 /src/actualize.c
parent9ca1d0c763e1c506ae7b43d50db225914b709397 (diff)
downloadek-2841470fd34a6ed41df94f925bbeb95819bfca9a.tar.gz
ek-2841470fd34a6ed41df94f925bbeb95819bfca9a.zip
skip a few extra allocs
Diffstat (limited to 'src/actualize.c')
-rw-r--r--src/actualize.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/actualize.c b/src/actualize.c
index 991beed..5aee29b 100644
--- a/src/actualize.c
+++ b/src/actualize.c
@@ -1292,12 +1292,16 @@ static int actualize_block(struct act_state *state,
if (state->defer_stack == defers)
return 0;
- block_defers(node) = clone_defers(state, defers);
- if (!block_defers(node)) {
+ struct ast *d = clone_defers(state, defers);
+ if (!d) {
internal_error("failed cloning defers");
clear_defers(state, defers);
return -1;
}
+
+ block_defers(node) = d;
+ if (actualize_list(state, d->scope, d))
+ return -1;
}
clear_defers(state, defers);