mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
Bug fixes: assignment operator forgot to copy over size; copy ctor forgot to clear unused top bits.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34305 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b04973edfa
commit
506e899490
@ -86,6 +86,7 @@ public:
|
||||
Capacity = NumBitWords(s);
|
||||
Bits = new BitWord[Capacity];
|
||||
init_words(Bits, Capacity, t);
|
||||
clear_unused_bits();
|
||||
}
|
||||
|
||||
/// BitVector copy ctor.
|
||||
@ -175,6 +176,7 @@ public:
|
||||
init_words(&Bits[OldCapacity], (Capacity-OldCapacity), t);
|
||||
}
|
||||
Size = N;
|
||||
clear_unused_bits();
|
||||
}
|
||||
|
||||
void reserve(unsigned N) {
|
||||
@ -274,17 +276,16 @@ public:
|
||||
const BitVector &operator=(const BitVector &RHS) {
|
||||
if (this == &RHS) return *this;
|
||||
|
||||
unsigned RHSWords = NumBitWords(RHS.size());
|
||||
unsigned NewSize = RHS.size();
|
||||
if (NewSize <= Capacity * BITS_PER_WORD) {
|
||||
Size = RHS.size();
|
||||
unsigned RHSWords = NumBitWords(Size);
|
||||
if (Size > Capacity * BITS_PER_WORD) {
|
||||
std::copy(RHS.Bits, &RHS.Bits[RHSWords], Bits);
|
||||
Size = NewSize;
|
||||
clear_unused_bits();
|
||||
return *this;
|
||||
}
|
||||
|
||||
// Grow the bitvector to have enough elements.
|
||||
Capacity = NumBitWords(NewSize);
|
||||
Capacity = NumBitWords(Size);
|
||||
BitWord *NewBits = new BitWord[Capacity];
|
||||
std::copy(RHS.Bits, &RHS.Bits[RHSWords], NewBits);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user