diff options
author | Mike Buland <eichlan@xagasoft.com> | 2009-01-27 00:31:24 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2009-01-27 00:31:24 +0000 |
commit | 8bc5ac336d5d684341a05e97d1cb1b18ecba0331 (patch) | |
tree | f4564108f73b3bb9be177633eca4053810c225e9 /src/bitstring.cpp | |
parent | dfd5f8696787d18ae688b662040289f84b667fdd (diff) | |
download | libbu++-8bc5ac336d5d684341a05e97d1cb1b18ecba0331.tar.gz libbu++-8bc5ac336d5d684341a05e97d1cb1b18ecba0331.tar.bz2 libbu++-8bc5ac336d5d684341a05e97d1cb1b18ecba0331.tar.xz libbu++-8bc5ac336d5d684341a05e97d1cb1b18ecba0331.zip |
Hey, I think that'll fix some things valgrind was bitching about. Apparently
BitString is...not so good...I may have to rewrite big chunks.
Diffstat (limited to '')
-rw-r--r-- | src/bitstring.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/bitstring.cpp b/src/bitstring.cpp index 85f89e2..b3bcde5 100644 --- a/src/bitstring.cpp +++ b/src/bitstring.cpp | |||
@@ -1,8 +1,10 @@ | |||
1 | #include "bitstring.h" | 1 | #include "bu/bitstring.h" |
2 | #include <stdlib.h> | 2 | #include <stdlib.h> |
3 | #include <stdio.h> | 3 | #include <stdio.h> |
4 | #include <string.h> | 4 | #include <string.h> |
5 | 5 | ||
6 | #include "bu/exceptionbase.h" | ||
7 | |||
6 | #ifdef _WIN32 | 8 | #ifdef _WIN32 |
7 | #define random() rand() | 9 | #define random() rand() |
8 | #endif | 10 | #endif |
@@ -187,6 +189,8 @@ void Bu::BitString::fixup() | |||
187 | 189 | ||
188 | void Bu::BitString::setBit( long iBit, bool bBitState ) | 190 | void Bu::BitString::setBit( long iBit, bool bBitState ) |
189 | { | 191 | { |
192 | if( iBit < 0 || iBit >= iBits ) | ||
193 | throw Bu::ExceptionBase("bit out of range: %d in (0-%d)", iBit, iBits ); | ||
190 | if( bBitState ) | 194 | if( bBitState ) |
191 | { | 195 | { |
192 | caData[iBit/8] |= (1<<(iBit%8)); | 196 | caData[iBit/8] |= (1<<(iBit%8)); |
@@ -342,7 +346,7 @@ bool Bu::BitString::setSize( long iLength, bool bClear ) | |||
342 | { | 346 | { |
343 | // Ok, reallocate and copy... | 347 | // Ok, reallocate and copy... |
344 | iBits = iLength; | 348 | iBits = iLength; |
345 | long iNewBytes = bitsToBytes( iLength ); | 349 | // long iNewBytes = bitsToBytes( iLength ); |
346 | if( bClear ) | 350 | if( bClear ) |
347 | { | 351 | { |
348 | delete[] caData; | 352 | delete[] caData; |
@@ -352,7 +356,7 @@ bool Bu::BitString::setSize( long iLength, bool bClear ) | |||
352 | else | 356 | else |
353 | { | 357 | { |
354 | unsigned char *tmp = caData; | 358 | unsigned char *tmp = caData; |
355 | caData = new unsigned char[iBytes]; | 359 | caData = new unsigned char[iNewBytes]; |
356 | if( iNewBytes < iBytes ) | 360 | if( iNewBytes < iBytes ) |
357 | { | 361 | { |
358 | memcpy( caData, tmp, iNewBytes ); | 362 | memcpy( caData, tmp, iNewBytes ); |