]> source.dussan.org Git - rspamd.git/commitdiff
Prefer processed elements during optimizations.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 19 Mar 2015 09:14:27 +0000 (09:14 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 19 Mar 2015 09:14:27 +0000 (09:14 +0000)
src/libutil/expression.c

index 91e52b6d7d20ff982b091d37d7eae51c38263d63..e103b5b6025830fa202138ba1544cede11126097 100644 (file)
@@ -531,8 +531,10 @@ err:
        return FALSE;
 }
 
-#define CHOSE_OPERAND(e1, e2) (((e1)->p.atom->priority >= (e2)->p.atom->priority) ? \
-               (e1) : (e2))
+#define CHOSE_OPERAND(e1, e2) ((e1)->flags & RSPAMD_EXPR_FLAG_PROCESSED ? (e1) : \
+       ((e2)->flags & RSPAMD_EXPR_FLAG_PROCESSED) ? (e2) :                                             \
+       ((e1)->p.atom->priority >= (e2)->p.atom->priority) ?                                    \
+       (e1) : (e2))
 #define CHOOSE_REMAIN(e1, e2, es) ((es) == (e1) ? (e2) : (e1))
 #define PROCESS_ELT(expr, e)   do {                                                                            \
                if (!((e)->flags & RSPAMD_EXPR_FLAG_PROCESSED)) {                                       \