diff options
author | mlcreech <mlcreech@noemail.net> | 2008-03-14 13:02:08 +0000 |
---|---|---|
committer | mlcreech <mlcreech@noemail.net> | 2008-03-14 13:02:08 +0000 |
commit | dda5b68cb3d4beb5a6379f1ba6d4622c4a90f2bc (patch) | |
tree | 31559537d7eca2feedfde014e4bfb1943684971e /src/bitvec.c | |
parent | d5fe8d6c4314f2739d2460d15845fac6fcec555c (diff) | |
download | sqlite-dda5b68cb3d4beb5a6379f1ba6d4622c4a90f2bc.tar.gz sqlite-dda5b68cb3d4beb5a6379f1ba6d4622c4a90f2bc.zip |
Revise Bitvec struct sizing to prevent assertion failure on 64-bit systems (CVS 4862)
FossilOrigin-Name: a3c12dbe95c8fb93f5b9006bf5d2c5b933fc5e87
Diffstat (limited to 'src/bitvec.c')
-rw-r--r-- | src/bitvec.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/bitvec.c b/src/bitvec.c index 23a002c64..7fa8a8aec 100644 --- a/src/bitvec.c +++ b/src/bitvec.c @@ -32,16 +32,19 @@ ** start of a transaction, and is thus usually less than a few thousand, ** but can be as large as 2 billion for a really big database. ** -** @(#) $Id: bitvec.c,v 1.1 2008/02/18 14:47:34 drh Exp $ +** @(#) $Id: bitvec.c,v 1.2 2008/03/14 13:02:08 mlcreech Exp $ */ #include "sqliteInt.h" #define BITVEC_SZ 512 -#define BITVEC_NCHAR (BITVEC_SZ-12) +/* Round the union size down to the nearest pointer boundary, since that's how +** it will be aligned within the Bitvec struct. */ +#define BITVEC_USIZE (((BITVEC_SZ-12)/sizeof(Bitvec *))*sizeof(Bitvec *)) +#define BITVEC_NCHAR BITVEC_USIZE #define BITVEC_NBIT (BITVEC_NCHAR*8) -#define BITVEC_NINT ((BITVEC_SZ-12)/4) +#define BITVEC_NINT (BITVEC_USIZE/4) #define BITVEC_MXHASH (BITVEC_NINT/2) -#define BITVEC_NPTR ((BITVEC_SZ-12)/8) +#define BITVEC_NPTR (BITVEC_USIZE/sizeof(Bitvec *)) #define BITVEC_HASH(X) (((X)*37)%BITVEC_NINT) |