ffsl, ffsll: Avoid unportable behaviour.
authorBruno Haible <bruno@clisp.org>
Sat, 16 Jul 2011 00:51:48 +0000 (02:51 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 16 Jul 2011 00:51:48 +0000 (02:51 +0200)
* lib/ffsl.h (FUNC): Use 'unsigned int' instead of 'int'.

ChangeLog
lib/ffsl.h

index 9ee9bea80bfb03bede00eef439af1668d0308a33..e97313b66551bcdeb00185cb35e7c71eb2418eb2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2011-07-15  Bruno Haible  <bruno@clisp.org>
+
+       ffsl, ffsll: Avoid unportable behaviour.
+       * lib/ffsl.h (FUNC): Use 'unsigned int' instead of 'int'.
+
 2011-07-15  Bruno Haible  <bruno@clisp.org>
 
        ffs: More tests.
index 673b0aa2ba9c4c7001a69c39ffc0c0f042c87dce..eb7fead56de7615020bb9790b6017f2bff2c99ef 100644 (file)
@@ -39,9 +39,9 @@ FUNC (TYPE i)
     return 0;
   while (1)
     {
-      if ((int) j)
-        return result + ffs (j);
-      j >>= CHAR_BIT * sizeof (int);
-      result += CHAR_BIT * sizeof (int);
+      if ((unsigned int) j)
+        return result + ffs ((unsigned int) j);
+      j >>= CHAR_BIT * sizeof (unsigned int);
+      result += CHAR_BIT * sizeof (unsigned int);
     }
 }