summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2018-10-03 16:19:47 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2018-10-03 16:23:05 +0200
commita493147e60d350aca4197975281bf2ffe4cd1009 (patch)
treeb769ea5167ea6a02da7defc8425bd50221dc7e93 /src
parent406d17db7e02f78d258edb38ac8571112ef8c767 (diff)
segtree: stop iteration on existing elements in case range is found
No need to keep iterating once the range object has been allocated. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r--src/segtree.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/segtree.c b/src/segtree.c
index dc2554b7..dc457d6b 100644
--- a/src/segtree.c
+++ b/src/segtree.c
@@ -661,16 +661,18 @@ static struct expr *get_set_interval_find(const struct table *table,
range_expr_value_low(low, i);
range_expr_value_high(high, i);
if (mpz_cmp(left->key->value, low) >= 0 &&
- mpz_cmp(right->key->value, high) <= 0)
+ mpz_cmp(right->key->value, high) <= 0) {
range = range_expr_alloc(&internal_location,
expr_clone(left->key),
expr_clone(right->key));
+ goto out;
+ }
break;
default:
break;
}
}
-
+out:
mpz_clear(low);
mpz_clear(high);
@@ -697,14 +699,14 @@ static struct expr *get_set_interval_end(const struct table *table,
range = range_expr_alloc(&internal_location,
expr_clone(left->key),
expr_clone(i->key->right));
- break;
+ goto out;
}
break;
default:
break;
}
}
-
+out:
mpz_clear(low);
mpz_clear(high);