mirror of
https://github.com/Z3Prover/z3
synced 2025-06-21 21:33:39 +00:00
bit_vector: fix operator==() for the case that num_bits is a multiple of 32
Signed-off-by: Nuno Lopes <t-nclaud@microsoft.com>
This commit is contained in:
parent
39d7246251
commit
c824178e7e
2 changed files with 4 additions and 3 deletions
|
@ -116,7 +116,7 @@ void bit_vector::shift_right(unsigned k) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool bit_vector::operator==(bit_vector const & source) {
|
bool bit_vector::operator==(bit_vector const & source) const {
|
||||||
if (m_num_bits != source.m_num_bits)
|
if (m_num_bits != source.m_num_bits)
|
||||||
return false;
|
return false;
|
||||||
unsigned n = num_words();
|
unsigned n = num_words();
|
||||||
|
@ -129,6 +129,7 @@ bool bit_vector::operator==(bit_vector const & source) {
|
||||||
}
|
}
|
||||||
unsigned bit_rest = source.m_num_bits % 32;
|
unsigned bit_rest = source.m_num_bits % 32;
|
||||||
unsigned mask = (1 << bit_rest) - 1;
|
unsigned mask = (1 << bit_rest) - 1;
|
||||||
|
if (mask == 0) mask = UINT_MAX;
|
||||||
return (m_data[i] & mask) == (source.m_data[i] & mask);
|
return (m_data[i] & mask) == (source.m_data[i] & mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -171,9 +171,9 @@ public:
|
||||||
resize(sz, val);
|
resize(sz, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool operator==(bit_vector const & other);
|
bool operator==(bit_vector const & other) const;
|
||||||
|
|
||||||
bool operator!=(bit_vector const & other) { return !operator==(other); }
|
bool operator!=(bit_vector const & other) const { return !operator==(other); }
|
||||||
|
|
||||||
bit_vector & operator=(bit_vector const & source) {
|
bit_vector & operator=(bit_vector const & source) {
|
||||||
m_num_bits = source.m_num_bits;
|
m_num_bits = source.m_num_bits;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue