Fix off-by-one in generic ffz
[fio.git] / lib / ffz.h
index 7fc7d4567ef155035527e9bc5c5751feafd5d9d9..4324f5a3c67b378b93bda2201c937164f5d43477 100644 (file)
--- a/lib/ffz.h
+++ b/lib/ffz.h
@@ -3,7 +3,7 @@
 
 static inline int __ffs(int word)
 {
-       int r = 0;
+       int r = 1;
 
        if (!(word & 0xffff)) {
                word >>= 16;
@@ -31,7 +31,7 @@ static inline int __ffs(int word)
 
 static inline int ffz(unsigned int bitmask)
 {
-       return ffs(~bitmask);
+       return ffs(~bitmask) - 1;
 }
 
 #endif