fix off-by-one error in checks for implementation-internal signal numbers
[oweals/musl.git] / src / misc / ffs.c
index 2f7cb32198462895a67350e87816849c977c4811..673ce5a9758284c7eca182b32de3902c9b353b3f 100644 (file)
@@ -1,9 +1,7 @@
 #include <strings.h>
+#include "atomic.h"
 
 int ffs(int i)
 {
-       unsigned int j = i;
-       for (i=1; j && !(j&1); j>>=1, i++);
-       if (j) return i;
-       return 0;
+       return i ? a_ctz_l(i)+1 : 0;
 }