]> source.dussan.org Git - rspamd.git/commitdiff
Use most significant bit, not least significant one.
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Jun 2015 15:28:27 +0000 (16:28 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 2 Jun 2015 15:28:27 +0000 (16:28 +0100)
src/libserver/task.c

index c7803cabdf4cfe321f8b79aa4b2e7e3570055f76..0f73c15f13312e9325b53879b20ee5e4315b673f 100644 (file)
@@ -283,17 +283,21 @@ rspamd_task_load_message (struct rspamd_task *task,
 static gint
 rspamd_task_select_processing_stage (struct rspamd_task *task, guint stages)
 {
-       gint st;
+       gint st, mask;
 
-       st = ffs (task->processed_stages);
+       mask = task->processed_stages;
 
-       if (st == -1) {
-               st = (1 << 0);
+       if (mask == 0) {
+               st = 0;
        }
        else {
-               st = (1 << (st + 1));
+               for (st = 1; mask != 1; st ++) {
+                       mask = (unsigned int)mask >> 1;
+               }
        }
 
+       st = 1 << st;
+
        if (stages & st) {
                return st;
        }