From 78aecb72507785c8e2a0adb5bc2641b088f6d533 Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 10 Feb 2006 18:08:09 +0000 Subject: [PATCH] Make sure pointers are always aligned to 8-bytes when creating internal Index structures. (CVS 3079) FossilOrigin-Name: d20a33ac2a29a3410fa28078dd122d87d8fca4fe --- manifest | 14 +++++++------- manifest.uuid | 2 +- src/build.c | 8 ++++---- src/table.c | 1 + 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/manifest b/manifest index 10d77c0e92..cff2c56fef 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Clean\sup\spointer\smisuse\sin\svdbe.c.\s(CVS\s3078) -D 2006-02-10T14:02:07 +C Make\ssure\spointers\sare\salways\saligned\sto\s8-bytes\swhen\screating\sinternal\nIndex\sstructures.\s(CVS\s3079) +D 2006-02-10T18:08:09 F Makefile.in 5d8dff443383918b700e495de42ec65bc1c8865b F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028 @@ -36,7 +36,7 @@ F src/attach.c d73a3505de3fb9e373d0a158978116c4212031d0 F src/auth.c 9ae84d2d94eb96195e04515715e08e85963e96c2 F src/btree.c 579594eff6b200ee6e653f4da192d33c50413d56 F src/btree.h 5663c4f43e8521546ccebc8fc95acb013b8f3184 -F src/build.c 11798f165cdcf3b46f4b10b2ba3853b8c370eac2 +F src/build.c b46cd7d0e2daca775d9de0cba8abae1b1625caf4 F src/callback.c 1bf497306c32229114f826707054df7ebe10abf2 F src/complete.c 7d1a44be8f37de125fcafd3d3a018690b3799675 F src/date.c cd2bd5d1ebc6fa12d6312f69789ae5b0a2766f2e @@ -71,7 +71,7 @@ F src/server.c 087b92a39d883e3fa113cae259d64e4c7438bc96 F src/shell.c 738f55ed75fb36731e764bfdb40756ac43b90b08 F src/sqlite.h.in bc78a247fd9f294b30a4c03894f93fcb1e166410 F src/sqliteInt.h fe74eaa6aa953ace27c3db3272a470d279b6e3e5 -F src/table.c 486dcfce532685b53b5a2b5da8bba0ded6fb2316 +F src/table.c f64ec4fbfe333f8df925bc6ba494f55e05b0e75e F src/tclsqlite.c d9c26374b52cd47233ae0620d0a858a59b601f89 F src/test1.c ca8cb34747c53479e0748c11d1a10cc07d582bb8 F src/test2.c ca74a1d8aeb7d9606e8f6b762c5daf85c1a3f92b @@ -352,7 +352,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0 F www/version3.tcl a99cf5f6d8bd4d5537584a2b342f0fb9fa601d8b F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513 -P c468aa349db4e6571711bf94781b88aa3c811d03 -R 51d8d35bd9f658825f6805cd6b33762d +P 9e82b927490bc152f61c4ee3e95b6d08ea16c858 +R b962ad9f5ff93d26be9a1cef5920b41c U drh -Z dc1199c71c73b605a01499c9907f4b4c +Z d1ddeb33c5918242cb780500c7215c77 diff --git a/manifest.uuid b/manifest.uuid index c589788d80..18c17955f6 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -9e82b927490bc152f61c4ee3e95b6d08ea16c858 \ No newline at end of file +d20a33ac2a29a3410fa28078dd122d87d8fca4fe \ No newline at end of file diff --git a/src/build.c b/src/build.c index a49beb4ee4..e370477f85 100644 --- a/src/build.c +++ b/src/build.c @@ -22,7 +22,7 @@ ** COMMIT ** ROLLBACK ** -** $Id: build.c,v 1.385 2006/02/10 07:07:14 danielk1977 Exp $ +** $Id: build.c,v 1.386 2006/02/10 18:08:09 drh Exp $ */ #include "sqliteInt.h" #include @@ -2362,10 +2362,10 @@ void sqlite3CreateIndex( nExtra /* Collation sequence names */ ); if( sqlite3MallocFailed() ) goto exit_create_index; - pIndex->aiColumn = (int *)(&pIndex[1]); + pIndex->azColl = (char**)(&pIndex[1]); + pIndex->aiColumn = (int *)(&pIndex->azColl[nCol]); pIndex->aiRowEst = (unsigned *)(&pIndex->aiColumn[nCol]); - pIndex->azColl = (char **)(&pIndex->aiRowEst[nCol+1]); - pIndex->aSortOrder = (u8 *)(&pIndex->azColl[nCol]); + pIndex->aSortOrder = (u8 *)(&pIndex->aiRowEst[nCol+1]); pIndex->zName = (char *)(&pIndex->aSortOrder[nCol]); zExtra = (char *)(&pIndex->zName[nName+1]); strcpy(pIndex->zName, zName); diff --git a/src/table.c b/src/table.c index 8953ead725..8bd9ea71fb 100644 --- a/src/table.c +++ b/src/table.c @@ -145,6 +145,7 @@ int sqlite3_get_table( res.azResult[0] = 0; rc = sqlite3_exec(db, zSql, sqlite3_get_table_cb, &res, pzErrMsg); if( res.azResult ){ + assert( sizeof(res.azResult[0])>= sizeof(res.nData) ); res.azResult[0] = (char*)res.nData; } if( rc==SQLITE_ABORT ){