From: dan Date: Tue, 3 Dec 2013 18:26:56 +0000 (+0000) Subject: Fix an alignment problem in the stat3/stat4 code affecting 32-bit platforms. X-Git-Tag: version-3.8.2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b5f68b0c8c0adb278e0cb9d1655d7855a5717776;p=thirdparty%2Fsqlite.git Fix an alignment problem in the stat3/stat4 code affecting 32-bit platforms. FossilOrigin-Name: 14f9bc79014e5762b88b9f0b98f4d47a8092d127 --- diff --git a/manifest b/manifest index 0472ec5877..345a88274d 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 1071089651..39f7a3f4c0 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b654a4ec729c86c6e94365fb0d3f83c598d4461a \ No newline at end of file +14f9bc79014e5762b88b9f0b98f4d47a8092d127 \ No newline at end of file diff --git a/src/vdbemem.c b/src/vdbemem.c index 9604920150..670691c072 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -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; iaMem[i].flags = MEM_Null; pRec->aMem[i].type = SQLITE_NULL;