Fix a buffer overrun detected by AddressSanitizer.
llvm-svn: 197647
This commit is contained in:
parent
2fc7101e3c
commit
386328f96f
|
@ -267,6 +267,7 @@ public:
|
|||
Bits[I / BITWORD_SIZE] = ~0UL;
|
||||
|
||||
BitWord PostfixMask = (1UL << (E % BITWORD_SIZE)) - 1;
|
||||
if (I < E)
|
||||
Bits[I / BITWORD_SIZE] |= PostfixMask;
|
||||
|
||||
return *this;
|
||||
|
@ -305,6 +306,7 @@ public:
|
|||
Bits[I / BITWORD_SIZE] = 0UL;
|
||||
|
||||
BitWord PostfixMask = (1UL << (E % BITWORD_SIZE)) - 1;
|
||||
if (I < E)
|
||||
Bits[I / BITWORD_SIZE] &= ~PostfixMask;
|
||||
|
||||
return *this;
|
||||
|
|
|
@ -356,6 +356,12 @@ TYPED_TEST(BitVectorTest, RangeOps) {
|
|||
EXPECT_TRUE( E.test(1));
|
||||
EXPECT_TRUE( E.test(32));
|
||||
EXPECT_FALSE(E.test(33));
|
||||
|
||||
TypeParam BufferOverrun;
|
||||
unsigned size = sizeof(unsigned long) * 8;
|
||||
BufferOverrun.resize(size);
|
||||
BufferOverrun.reset(0, size);
|
||||
BufferOverrun.set(0, size);
|
||||
}
|
||||
|
||||
TYPED_TEST(BitVectorTest, CompoundTestReset) {
|
||||
|
|
Loading…
Reference in New Issue