diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-10-03 16:19:47 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2018-10-03 16:23:05 +0200 |
commit | a493147e60d350aca4197975281bf2ffe4cd1009 (patch) | |
tree | b769ea5167ea6a02da7defc8425bd50221dc7e93 /src/segtree.c | |
parent | 406d17db7e02f78d258edb38ac8571112ef8c767 (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/segtree.c')
-rw-r--r-- | src/segtree.c | 10 |
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); |