summaryrefslogtreecommitdiffstats
path: root/opt.c
diff options
context:
space:
mode:
Diffstat (limited to 'opt.c')
-rw-r--r--opt.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/opt.c b/opt.c
index 405f995..a7ebbe2 100644
--- a/opt.c
+++ b/opt.c
@@ -571,6 +571,19 @@ static struct expr *optimize_expr_recursive(struct opt_state *state, struct expr
goto done;
}
+ struct expr *lhs = expr->lhs;
+ struct expr *rhs = expr->rhs;
+ if (rhs) {
+ expr->persistent_fds = rhs->persistent_fds;
+ expr->ephemeral_fds = rhs->ephemeral_fds;
+ }
+ if (lhs) {
+ expr->persistent_fds += lhs->persistent_fds;
+ if (lhs->ephemeral_fds > expr->ephemeral_fds) {
+ expr->ephemeral_fds = lhs->ephemeral_fds;
+ }
+ }
+
if (expr->always_true) {
set_facts_impossible(&state->facts_when_false);
}