summaryrefslogtreecommitdiffstats
path: root/src/libutil/expression.c
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2015-03-24 13:49:13 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2015-03-24 13:49:13 +0000
commit21d32da6a5200dde3dad32ea40721ff2f1679419 (patch)
tree6f56ad3ae79f6ab4a420d53a7ce304aa507af931 /src/libutil/expression.c
parentdada9cf1cc23ef27c3bbff9ded12c8c23d8dbc61 (diff)
downloadrspamd-21d32da6a5200dde3dad32ea40721ff2f1679419.tar.gz
rspamd-21d32da6a5200dde3dad32ea40721ff2f1679419.zip
Fix inversion logic.
Diffstat (limited to 'src/libutil/expression.c')
-rw-r--r--src/libutil/expression.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/libutil/expression.c b/src/libutil/expression.c
index 77627becf..06a3af8e8 100644
--- a/src/libutil/expression.c
+++ b/src/libutil/expression.c
@@ -595,6 +595,13 @@ rspamd_process_expression (struct rspamd_expression *expr, gpointer data)
st_elt[0]->flags |= RSPAMD_EXPR_FLAG_NEGATE;
}
+ if (st_elt[0]->flags & RSPAMD_EXPR_FLAG_PROCESSED) {
+ /* Inverse the value */
+ if ((st_elt[0]->flags & RSPAMD_EXPR_FLAG_NEGATE)) {
+ st_elt[0]->value = !st_elt[0]->value;
+ }
+ }
+
rspamd_expr_stack_push (expr, st_elt[0]);
break;
case OP_OR: