]> git.saurik.com Git - bison.git/commitdiff
(abitset_reverse_list, ebitset_reverse_list):
authorPaul Eggert <eggert@cs.ucla.edu>
Mon, 12 Aug 2002 14:09:24 +0000 (14:09 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Mon, 12 Aug 2002 14:09:24 +0000 (14:09 +0000)
Do not assume that bitset_windex is the same width as unsigned.
(abitset_unused_clear): Do not assume that bitset_word is the same
width as int.
(abitset_op1): Use -1, not ~0, as memset arg (for portability to one's
complement hosts!).

lib/abitset.c

index 9cdb40ce8752dfb4cd2af612d0593e95acba2be7..f3c32ef42f17a53437e29e820c9c85c71226d376 100644 (file)
@@ -208,8 +208,7 @@ abitset_reverse_list (src, list, num, next)
   bitcnt = bitno % BITSET_WORD_BITS;
   bitoff = windex * BITSET_WORD_BITS;
 
-  for (; windex != ~0U; windex--, bitoff -= BITSET_WORD_BITS,
-        bitcnt = BITSET_WORD_BITS - 1)
+  do
     {
       word = srcp[windex] << (BITSET_WORD_BITS - 1 - bitcnt);
       for (; word; bitcnt--)
@@ -225,7 +224,10 @@ abitset_reverse_list (src, list, num, next)
            }
          word <<= 1;
        }
+      bitoff -= BITSET_WORD_BITS;
+      bitcnt = BITSET_WORD_BITS - 1;
     }
+  while (windex--);
 
   *next = n_bits - (bitoff + 1);
   return count;
@@ -348,7 +350,7 @@ abitset_unused_clear (dst)
   last_bit = ABITSET_N_BITS (dst) % BITSET_WORD_BITS;
   if (last_bit)
     ABITSET_WORDS (dst)[dst->b.csize - 1] &=
-      (bitset_word) ((1 << last_bit) - 1);
+      ((bitset_word) 1 << last_bit) - 1;
 }
 
 
@@ -370,7 +372,7 @@ abitset_op1 (dst, op)
       break;
 
     case BITSET_OP_ONES:
-      memset (dstp, ~0, bytes);
+      memset (dstp, -1, bytes);
       abitset_unused_clear (dst);
       break;