summaryrefslogtreecommitdiffstats
path: root/src/segtree.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/segtree.c')
-rw-r--r--src/segtree.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/segtree.c b/src/segtree.c
index b6ca6083..49169e73 100644
--- a/src/segtree.c
+++ b/src/segtree.c
@@ -1027,6 +1027,10 @@ void interval_map_decompose(struct expr *set)
tmp->timeout = low->left->timeout;
if (low->left->expiration)
tmp->expiration = low->left->expiration;
+ if (low->left->stmt) {
+ tmp->stmt = low->left->stmt;
+ low->left->stmt = NULL;
+ }
tmp = mapping_expr_alloc(&tmp->location, tmp,
expr_clone(low->right));
@@ -1037,6 +1041,10 @@ void interval_map_decompose(struct expr *set)
tmp->timeout = low->timeout;
if (low->expiration)
tmp->expiration = low->expiration;
+ if (low->stmt) {
+ tmp->stmt = low->stmt;
+ low->stmt = NULL;
+ }
}
compound_expr_add(set, tmp);
@@ -1059,6 +1067,10 @@ void interval_map_decompose(struct expr *set)
prefix->timeout = low->left->timeout;
if (low->left->expiration)
prefix->expiration = low->left->expiration;
+ if (low->left->stmt) {
+ prefix->stmt = low->left->stmt;
+ low->left->stmt = NULL;
+ }
prefix = mapping_expr_alloc(&low->location, prefix,
expr_clone(low->right));
@@ -1069,6 +1081,10 @@ void interval_map_decompose(struct expr *set)
prefix->timeout = low->timeout;
if (low->expiration)
prefix->expiration = low->expiration;
+ if (low->stmt) {
+ prefix->stmt = low->stmt;
+ low->stmt = NULL;
+ }
}
compound_expr_add(set, prefix);