diff options
-rw-r--r-- | src/common/bits.c | 4 | ||||
-rw-r--r-- | tests/common/bitfield.py | 12 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/common/bits.c b/src/common/bits.c index 7b49bb8..2714293 100644 --- a/src/common/bits.c +++ b/src/common/bits.c @@ -233,9 +233,9 @@ int compare_bit_fields(const bitfield_t *a, const bitfield_t *b) else if (a->length < b->length) result = -1; - if (result == 0) + else { - final = a->length % sizeof(unsigned long); + final = a->length % (8 * sizeof(unsigned long)); if (final == 0) final = ~0lu; diff --git a/tests/common/bitfield.py b/tests/common/bitfield.py index cb82580..717181c 100644 --- a/tests/common/bitfield.py +++ b/tests/common/bitfield.py @@ -132,3 +132,15 @@ class TestBitfields(ChrysalideTestCase): self.assertEqual(bf.size, 65) self.assertEqual(bf.popcount, 65) + + + def testBitfieldComparison(self): + """Check bitfield comparison.""" + + bf_a = bitfield(9, 0) + bf_a.set(0, 1) + bf_a.set(5, 1) + + bf_b = bitfield(9, 1) + + self.assertNotEqual(bf_a, bf_b) |