]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an alignment problem in the stat3/stat4 code affecting 32-bit platforms.
authordan <dan@noemail.net>
Tue, 3 Dec 2013 18:26:56 +0000 (18:26 +0000)
committerdan <dan@noemail.net>
Tue, 3 Dec 2013 18:26:56 +0000 (18:26 +0000)
FossilOrigin-Name: 14f9bc79014e5762b88b9f0b98f4d47a8092d127

manifest
manifest.uuid
src/vdbemem.c

index 0472ec5877b67a6e66f40dc379fcbbdd4ed851da..345a88274d095616af2a646ac107d558a2deee29 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sa\stypo\sin\sfts3varint.test\spreventing\sthe\svalgrind\spermutation\stest\sfrom\srunning.
-D 2013-12-03T17:09:53.190
+C Fix\san\salignment\sproblem\sin\sthe\sstat3/stat4\scode\saffecting\s32-bit\splatforms.
+D 2013-12-03T18:26:56.746
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in e1a9b4258bbde53f5636f4e238c65b7e11459e2b
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -286,7 +286,7 @@ F src/vdbeInt.h 05fbda0e061dbc4aaa2709a8cccf3515c245b263
 F src/vdbeapi.c 93a22a9ba2abe292d5c2cf304d7eb2e894dde0ed
 F src/vdbeaux.c 09b79d475f5af2b3b5068f639609d88e0ced9d95
 F src/vdbeblob.c 8cd05a5630e6d5563ad017bf82edaf812b28acde
-F src/vdbemem.c fed9357c0b79cd707957c28b144f5bf9d7cc6bfc
+F src/vdbemem.c d9811b08c4cda6f9108b49223aa0d3b07d595eb5
 F src/vdbesort.c 9d83601f9d6243fe70dd0169a2820c5ddfd48147
 F src/vdbetrace.c e7ec40e1999ff3c6414424365d5941178966dcbc
 F src/vtab.c 21b932841e51ebd7d075e2d0ad1415dce8d2d5fd
@@ -1145,7 +1145,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
-P e4164fd8f75ce1c8d63bec70db7049b68208c12c
-R 5dd75e0d17034f1dfb570f2b50097682
+P b654a4ec729c86c6e94365fb0d3f83c598d4461a
+R 9b643eb26a4f573bb81c9ce75c7a93ef
 U dan
-Z 186cdf231e96bcfce0281b587d69f9f7
+Z 1aa369240dc90be6769d251ab8ec5acc
index 107108965130f67f9e96e0c7f636e6dfb5b38046..39f7a3f4c06c137ca1ce911ecc3334f7def72c07 100644 (file)
@@ -1 +1 @@
-b654a4ec729c86c6e94365fb0d3f83c598d4461a
\ No newline at end of file
+14f9bc79014e5762b88b9f0b98f4d47a8092d127
\ No newline at end of file
index 96049201504116e66f3cccbe72d730d23a3fa313..670691c07295e872a2de1f8d6a55286623cd5811 100644 (file)
@@ -1016,7 +1016,7 @@ static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
       int i;                      /* Counter variable */
       int nCol = pIdx->nColumn;   /* Number of index columns including rowid */
   
-      nByte = sizeof(Mem) * nCol + sizeof(UnpackedRecord);
+      nByte = sizeof(Mem) * nCol + ROUND8(sizeof(UnpackedRecord));
       pRec = (UnpackedRecord*)sqlite3DbMallocZero(db, nByte);
       if( pRec ){
         pRec->pKeyInfo = sqlite3KeyInfoOfIndex(p->pParse, pIdx);
@@ -1024,7 +1024,7 @@ static sqlite3_value *valueNew(sqlite3 *db, struct ValueNewStat4Ctx *p){
           assert( pRec->pKeyInfo->nField+pRec->pKeyInfo->nXField==nCol );
           assert( pRec->pKeyInfo->enc==ENC(db) );
           pRec->flags = UNPACKED_PREFIX_MATCH;
-          pRec->aMem = (Mem *)&pRec[1];
+          pRec->aMem = (Mem *)((u8*)pRec + ROUND8(sizeof(UnpackedRecord)));
           for(i=0; i<nCol; i++){
             pRec->aMem[i].flags = MEM_Null;
             pRec->aMem[i].type = SQLITE_NULL;