From d6eba4239f3ba24daba6aff6974df8e1d61aa22e Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Mon, 12 Aug 2002 14:09:24 +0000 Subject: [PATCH] (abitset_reverse_list, ebitset_reverse_list): 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 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/abitset.c b/lib/abitset.c index 9cdb40c..f3c32ef 100644 --- a/lib/abitset.c +++ b/lib/abitset.c @@ -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; -- 2.7.4