aboutsummaryrefslogtreecommitdiff
path: root/lout
diff options
context:
space:
mode:
Diffstat (limited to 'lout')
-rw-r--r--lout/misc.cc6
-rw-r--r--lout/misc.hh2
2 files changed, 6 insertions, 2 deletions
diff --git a/lout/misc.cc b/lout/misc.cc
index 8d630efc..9b333c93 100644
--- a/lout/misc.cc
+++ b/lout/misc.cc
@@ -133,6 +133,7 @@ void StringBuffer::clear ()
BitSet::BitSet(int initBits)
{
+ numBits = initBits;
numBytes = bytesForBits(initBits);
bits = (unsigned char*)malloc(numBytes * sizeof(unsigned char));
clear();
@@ -146,7 +147,7 @@ BitSet::~BitSet()
void BitSet::intoStringBuffer(misc::StringBuffer *sb)
{
sb->append("[");
- for (int i = 0; i < numBytes; i++)
+ for (int i = 0; i < numBits; i++)
sb->append(get(i) ? "1" : "0");
sb->append("]");
}
@@ -161,6 +162,9 @@ bool BitSet::get(int i) const
void BitSet::set(int i, bool val)
{
+ if (i > numBits)
+ numBits = i;
+
if (8 * i >= numBytes) {
int newNumBytes = numBytes;
while (8 * i >= newNumBytes)
diff --git a/lout/misc.hh b/lout/misc.hh
index a0beb1b6..50c655eb 100644
--- a/lout/misc.hh
+++ b/lout/misc.hh
@@ -579,7 +579,7 @@ class BitSet
{
private:
unsigned char *bits;
- int numBytes;
+ int numBits, numBytes;
inline int bytesForBits(int bits) { return bits == 0 ? 1 : (bits + 7) / 8; }