From: Vsevolod Stakhov Date: Wed, 13 May 2015 09:58:02 +0000 (+0100) Subject: Fix symbols removal in composites. X-Git-Tag: 0.9.0~20 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e26f428b72de0762a5dc6421941f9e59dba3be01;p=thirdparty%2Frspamd.git Fix symbols removal in composites. --- 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 { /*