From e26f428b72de0762a5dc6421941f9e59dba3be01 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 13 May 2015 10:58:02 +0100 Subject: [PATCH] Fix symbols removal in composites. --- src/libmime/filter.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/libmime/filter.c b/src/libmime/filter.c index b294abc365..70e5c3c6b7 100644 --- a/src/libmime/filter.c +++ b/src/libmime/filter.c @@ -572,11 +572,9 @@ rspamd_composite_expr_process (gpointer input, rspamd_expression_atom_t *atom) * evaluated. */ if ((rd = g_tree_lookup (cd->symbols_to_remove, ms->name)) == NULL) { - g_tree_insert (cd->symbols_to_remove, - (gpointer)ms->name, - rd); rd = rspamd_mempool_alloc (cd->task->task_pool, sizeof (*rd)); rd->ms = ms; + if (G_UNLIKELY (t == '~')) { rd->remove_weight = FALSE; rd->remove_symbol = TRUE; @@ -589,7 +587,11 @@ rspamd_composite_expr_process (gpointer input, rspamd_expression_atom_t *atom) rd->remove_symbol = TRUE; rd->remove_weight = TRUE; } + rd->comp = g_list_prepend (NULL, cd->composite); + g_tree_insert (cd->symbols_to_remove, + (gpointer)ms->name, + rd); } else { /* -- 2.47.3