From 9324665a7845d6ffd23e3bd53443d28cbf2e75fa Mon Sep 17 00:00:00 2001 From: Ted Kremenek Date: Mon, 10 Dec 2007 22:28:35 +0000 Subject: [PATCH] Added two bounds checks to the BitVector class to detect out-of-bounds bit accesses. The checks are only performed in a Debug build. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44815 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/BitVector.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/llvm/ADT/BitVector.h b/include/llvm/ADT/BitVector.h index 927cfa9f786..38436993c5e 100644 --- a/include/llvm/ADT/BitVector.h +++ b/include/llvm/ADT/BitVector.h @@ -245,10 +245,12 @@ public: // Indexing. reference operator[](unsigned Idx) { + assert (Idx < Size && "Out-of-bounds Bit access."); return reference(*this, Idx); } bool operator[](unsigned Idx) const { + assert (Idx < Size && "Out-of-bounds Bit access."); BitWord Mask = 1L << (Idx % BITWORD_SIZE); return (Bits[Idx / BITWORD_SIZE] & Mask) != 0; } @@ -375,6 +377,8 @@ private: // Destroy the old bits. delete[] Bits; Bits = NewBits; + + clear_unused_bits(); } void init_words(BitWord *B, unsigned NumWords, bool t) { -- 2.34.1