Blame SOURCES/0026-segtree-Use-expr_clone-in-get_set_interval_.patch

acfc56
From 119fbcbd8c37aac314d6ffa6225ab24ee4b0e31e Mon Sep 17 00:00:00 2001
acfc56
From: Phil Sutter <psutter@redhat.com>
acfc56
Date: Tue, 30 Jun 2020 16:20:23 +0200
acfc56
Subject: [PATCH] segtree: Use expr_clone in get_set_interval_*()
acfc56
acfc56
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1832235
acfc56
Upstream Status: nftables commit a2eedcc89d2ed
acfc56
acfc56
commit a2eedcc89d2ed40411c26d53579300c4f1ccb83d
acfc56
Author: Phil Sutter <phil@nwl.cc>
acfc56
Date:   Thu Apr 30 13:45:40 2020 +0200
acfc56
acfc56
    segtree: Use expr_clone in get_set_interval_*()
acfc56
acfc56
    Both functions perform interval set lookups with either start and end or
acfc56
    only start values as input. Interestingly, in practice they either see
acfc56
    values which are not contained or which match an existing range exactly.
acfc56
acfc56
    Make use of the above and just return a clone of the matching entry
acfc56
    instead of creating a new one based on input data.
acfc56
acfc56
    Signed-off-by: Phil Sutter <phil@nwl.cc>
acfc56
---
acfc56
 src/segtree.c | 8 ++------
acfc56
 1 file changed, 2 insertions(+), 6 deletions(-)
acfc56
acfc56
diff --git a/src/segtree.c b/src/segtree.c
acfc56
index 1ba4363..dc4db6b 100644
acfc56
--- a/src/segtree.c
acfc56
+++ b/src/segtree.c
acfc56
@@ -695,9 +695,7 @@ static struct expr *get_set_interval_find(const struct table *table,
acfc56
 			range_expr_value_high(high, i);
acfc56
 			if (mpz_cmp(left->key->value, low) >= 0 &&
acfc56
 			    mpz_cmp(right->key->value, high) <= 0) {
acfc56
-				range = range_expr_alloc(&internal_location,
acfc56
-							 expr_clone(left->key),
acfc56
-							 expr_clone(right->key));
acfc56
+				range = expr_clone(i->key);
acfc56
 				goto out;
acfc56
 			}
acfc56
 			break;
acfc56
@@ -729,9 +727,7 @@ static struct expr *get_set_interval_end(const struct table *table,
acfc56
 		case EXPR_RANGE:
acfc56
 			range_expr_value_low(low, i);
acfc56
 			if (mpz_cmp(low, left->key->value) == 0) {
acfc56
-				range = range_expr_alloc(&internal_location,
acfc56
-							 expr_clone(left->key),
acfc56
-							 expr_clone(i->key->right));
acfc56
+				range = expr_clone(i->key);
acfc56
 				goto out;
acfc56
 			}
acfc56
 			break;
acfc56
-- 
8ff5ad
2.31.1
acfc56