From 2817472bb07ae1b5f8a0f73aa154ea5ec6c193bc Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 3 Nov 2020 13:36:58 +0100 Subject: [PATCH] MINOR: pattern: during reload, delete elements frem the ref, not the expression Instead of scanning all elements from the expression and using the slow delete path there, let's use the faster way which involves pat_delete_gen() while the elements are detached from ther reference. --- src/pattern.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/pattern.c b/src/pattern.c index 9b58d3518..b2f06fea7 100644 --- a/src/pattern.c +++ b/src/pattern.c @@ -2074,9 +2074,8 @@ void pat_ref_reload(struct pat_ref *ref, struct pat_ref *replace) LIST_DEL_INIT(&bref->users); bref->ref = NULL; } + pat_delete_gen(ref, elt); LIST_DEL(&elt->list); - LIST_DEL(&elt->list_head); - LIST_DEL(&elt->tree_head); free(elt->pattern); free(elt->sample); free(elt); @@ -2087,7 +2086,6 @@ void pat_ref_reload(struct pat_ref *ref, struct pat_ref *replace) LIST_DEL(&replace->head); list_for_each_entry(expr, &ref->pat, list) { - expr->pat_head->prune(expr); list_for_each_entry(elt, &ref->head, list) { char *err = NULL; struct sample_data *data = NULL;