From: drh Date: Tue, 28 Apr 2009 13:01:09 +0000 (+0000) Subject: Do not store the zero string terminator as part of the name when holding X-Git-Tag: version-3.6.15~193 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a83ccca7940c21de2746140766a646bf1d204051;p=thirdparty%2Fsqlite.git Do not store the zero string terminator as part of the name when holding symbols in the symbol table. (CVS 6557) FossilOrigin-Name: 23d67af39227aeade2ea0292e1b8844eea580993 --- diff --git a/manifest b/manifest index e922117f1a..dcf7d29371 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Another\sfix\sto\sthe\ssame\sassert\sas\sin\s(6555).\sIt\scan\salso\sfail\safter\sa\smalloc\serror.\s(CVS\s6556) -D 2009-04-28T12:08:15 +C Do\snot\sstore\sthe\szero\sstring\sterminator\sas\spart\sof\sthe\sname\swhen\sholding\nsymbols\sin\sthe\ssymbol\stable.\s(CVS\s6557) +D 2009-04-28T13:01:09 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 583e87706abc3026960ed759aff6371faf84c211 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -109,7 +109,7 @@ F src/btmutex.c 9b899c0d8df3bd68f527b0afe03088321b696d3c F src/btree.c b4ec46b3adc3e2d82704c949d4b654b031a64ad6 F src/btree.h 99fcc7e8c4a1e35afe271bcb38de1a698dfc904e F src/btreeInt.h df64030d632f8c8ac217ed52e8b6b3eacacb33a5 -F src/build.c 2a50f5e65ab00fb2443af8df5a3130a2eb644b25 +F src/build.c dca0ad77c88cb00f6a11cc080a4f3285672cfa37 F src/callback.c 73016376d6848ba987709e8c9048d4f0e0776036 F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0 F src/date.c d327ec7bb2f64b08d32b1035de82b9ba8675de91 @@ -118,7 +118,7 @@ F src/expr.c dd763d6dc8f8329e895440d436c28aa7b5b3595e F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff F src/func.c f667fe886309707c7178542073bb0ced00a9fae7 F src/global.c 448419c44ce0701104c2121b0e06919b44514c0c -F src/hash.c 5824e6ff7ba78cd34c8d6cd724367713583e5b55 +F src/hash.c 15d39cbe87de9b9991054750bd3e0861888b7b06 F src/hash.h 28f38ebb1006a5beedcb013bcdfe31befe7437ae F src/hwtime.h 4a1d45f4cae1f402ea19686acf24acf4f0cb53cb F src/insert.c 71286d081a919a27ef22eaeccbe2718f93dc6aa9 @@ -176,7 +176,7 @@ F src/test6.c 1a0a7a1f179469044b065b4a88aab9faee114101 F src/test7.c b94e68c2236de76889d82b8d7d8e00ad6a4d80b1 F src/test8.c b1061548f7ce3aeedea3cc4d649ee1487c2b4eaf F src/test9.c 963d380922f25c1c323712d05db01b19197ee6f7 -F src/test_async.c 7e16faf71e43ccf748b942d535f25c0b35dfe9c1 +F src/test_async.c 731d23f953ece5bf40ce87810cfb7607218953c5 F src/test_autoext.c f53b0cdf7bf5f08100009572a5d65cdb540bd0ad F src/test_backup.c 1384a18985a5a2d275c2662e48473bf1542ebd08 F src/test_btree.c d7b8716544611c323860370ee364e897c861f1b0 @@ -198,7 +198,7 @@ F src/test_tclvar.c 9e42fa59d3d2f064b7ab8628e7ab2dc8a9fe93d4 F src/test_thread.c b8a1ab7ca1a632f18e8a361880d5d65eeea08eac F src/test_wsd.c 3ae5101de6cbfda2720152ab659ea84079719241 F src/tokenize.c 7bd3b6dd56566604ad24ed4aa017e6618166b500 -F src/trigger.c c029d5262768faa43962080a170bb707afa0b9d7 +F src/trigger.c 448615bec40efcd6b3a9362a060f2e7067f25be5 F src/update.c 5062f0f042f67a4da0aff69949f145e2bc96e3cd F src/utf.c 9541d28f40441812c0b40f00334372a0542c00ff F src/util.c 828c552a22a1d5b650b8a5ea0009546715c45d93 @@ -210,7 +210,7 @@ F src/vdbeapi.c 86aa27a5f3493aaffb8ac051782aa3b22670d7ed F src/vdbeaux.c 34524d499fc6081e97771dcfdf6c2523d5877ef5 F src/vdbeblob.c e67757450ae8581a8b354d9d7e467e41502dfe38 F src/vdbemem.c 111d8193859d16aefd5d3cb57472808584ea5503 -F src/vtab.c 6118d71c5137e20a7ac51fb5d9beb0361fbedb89 +F src/vtab.c 53355aa2381ec3ef2eaad25672cfd5877a02fe45 F src/walker.c 7cdf63223c953d4343c6833e940f110281a378ee F src/where.c d20e083e5cc549a04f1647ee180d3bc3d2c73c02 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 @@ -725,7 +725,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P a37d1174eb80e9a09522b236afdb47283f312d06 -R f42d9cf54c9eec4f9aff568e256db111 -U danielk1977 -Z 4597ce858abcbcdbae0b3edd7f439fd4 +P e096f90a57f0e0d1dbeaafc72762035ca55ab803 +R f73743cb4e4b683f902aa1f7603e9fc9 +U drh +Z d3fa05c89f737695a94e4772c7919db7 diff --git a/manifest.uuid b/manifest.uuid index f3749ea4b9..a865f104bf 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e096f90a57f0e0d1dbeaafc72762035ca55ab803 \ No newline at end of file +23d67af39227aeade2ea0292e1b8844eea580993 \ No newline at end of file diff --git a/src/build.c b/src/build.c index 77a1f9543b..f6e325aa8c 100644 --- a/src/build.c +++ b/src/build.c @@ -22,7 +22,7 @@ ** COMMIT ** ROLLBACK ** -** $Id: build.c,v 1.531 2009/04/24 18:06:09 danielk1977 Exp $ +** $Id: build.c,v 1.532 2009/04/28 13:01:09 drh Exp $ */ #include "sqliteInt.h" @@ -261,7 +261,7 @@ Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){ int i; int nName; assert( zName!=0 ); - nName = sqlite3Strlen(db, zName) + 1; + nName = sqlite3Strlen(db, zName); for(i=OMIT_TEMPDB; inDb; i++){ int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */ if( zDatabase!=0 && sqlite3StrICmp(zDatabase, db->aDb[j].zName) ) continue; @@ -323,7 +323,7 @@ Table *sqlite3LocateTable( Index *sqlite3FindIndex(sqlite3 *db, const char *zName, const char *zDb){ Index *p = 0; int i; - int nName = sqlite3Strlen(db, zName)+1; + int nName = sqlite3Strlen(db, zName); for(i=OMIT_TEMPDB; inDb; i++){ int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */ Schema *pSchema = db->aDb[j].pSchema; @@ -359,7 +359,7 @@ static void sqlite3DeleteIndex(Index *p){ const char *zName = p->zName; pOld = sqlite3HashInsert(&p->pSchema->idxHash, zName, - sqlite3Strlen30(zName)+1, 0); + sqlite3Strlen30(zName), 0); assert( pOld==0 || pOld==p ); freeIndex(p); } @@ -376,7 +376,7 @@ void sqlite3UnlinkAndDeleteIndex(sqlite3 *db, int iDb, const char *zIdxName){ Hash *pHash = &db->aDb[iDb].pSchema->idxHash; len = sqlite3Strlen(db, zIdxName); - pIndex = sqlite3HashInsert(pHash, zIdxName, len+1, 0); + pIndex = sqlite3HashInsert(pHash, zIdxName, len, 0); if( pIndex ){ if( pIndex->pTable->pIndex==pIndex ){ pIndex->pTable->pIndex = pIndex->pNext; @@ -524,7 +524,7 @@ void sqlite3DeleteTable(Table *pTable){ for(pFKey=pTable->pFKey; pFKey; pFKey=pNextFKey){ pNextFKey = pFKey->pNextFrom; assert( sqlite3HashFind(&pTable->pSchema->aFKey, - pFKey->zTo, sqlite3Strlen30(pFKey->zTo)+1)!=pFKey ); + pFKey->zTo, sqlite3Strlen30(pFKey->zTo))!=pFKey ); sqlite3DbFree(db, pFKey); } #endif @@ -556,11 +556,11 @@ void sqlite3UnlinkAndDeleteTable(sqlite3 *db, int iDb, const char *zTabName){ assert( zTabName && zTabName[0] ); pDb = &db->aDb[iDb]; p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName, - sqlite3Strlen30(zTabName)+1,0); + sqlite3Strlen30(zTabName),0); if( p ){ #ifndef SQLITE_OMIT_FOREIGN_KEY for(pF1=p->pFKey; pF1; pF1=pF1->pNextFrom){ - int nTo = sqlite3Strlen30(pF1->zTo) + 1; + int nTo = sqlite3Strlen30(pF1->zTo); pF2 = sqlite3HashFind(&pDb->pSchema->aFKey, pF1->zTo, nTo); if( pF2==pF1 ){ sqlite3HashInsert(&pDb->pSchema->aFKey, pF1->zTo, nTo, pF1->pNextTo); @@ -1688,7 +1688,7 @@ void sqlite3EndTable( FKey *pFKey; Schema *pSchema = p->pSchema; pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName, - sqlite3Strlen30(p->zName)+1,p); + sqlite3Strlen30(p->zName),p); if( pOld ){ assert( p==pOld ); /* Malloc must have failed inside HashInsert() */ db->mallocFailed = 1; @@ -1697,7 +1697,7 @@ void sqlite3EndTable( #ifndef SQLITE_OMIT_FOREIGN_KEY for(pFKey=p->pFKey; pFKey; pFKey=pFKey->pNextFrom){ void *data; - int nTo = sqlite3Strlen30(pFKey->zTo) + 1; + int nTo = sqlite3Strlen30(pFKey->zTo); pFKey->pNextTo = sqlite3HashFind(&pSchema->aFKey, pFKey->zTo, nTo); data = sqlite3HashInsert(&pSchema->aFKey, pFKey->zTo, nTo, pFKey); if( data==(void *)pFKey ){ @@ -2742,7 +2742,7 @@ void sqlite3CreateIndex( if( db->init.busy ){ Index *p; p = sqlite3HashInsert(&pIndex->pSchema->idxHash, - pIndex->zName, sqlite3Strlen30(pIndex->zName)+1, + pIndex->zName, sqlite3Strlen30(pIndex->zName), pIndex); if( p ){ assert( p==pIndex ); /* Malloc must have failed */ diff --git a/src/hash.c b/src/hash.c index 013f41af55..3761fb5479 100644 --- a/src/hash.c +++ b/src/hash.c @@ -12,7 +12,7 @@ ** This is the implementation of generic hash-tables ** used in SQLite. ** -** $Id: hash.c,v 1.33 2009/01/09 01:12:28 drh Exp $ +** $Id: hash.c,v 1.34 2009/04/28 13:01:09 drh Exp $ */ #include "sqliteInt.h" #include @@ -63,7 +63,7 @@ void sqlite3HashClear(Hash *pH){ static int strHash(const void *pKey, int nKey){ const char *z = (const char *)pKey; int h = 0; - if( nKey<=0 ) nKey = sqlite3Strlen30(z); + assert( nKey>0 ); while( nKey > 0 ){ h = (h<<3) ^ h ^ sqlite3UpperToLower[(unsigned char)*z++]; nKey--; diff --git a/src/test_async.c b/src/test_async.c index 4faa51ea94..52ed94bf3a 100644 --- a/src/test_async.c +++ b/src/test_async.c @@ -10,7 +10,7 @@ ** ************************************************************************* ** -** $Id: test_async.c,v 1.61 2009/04/25 08:39:15 danielk1977 Exp $ +** $Id: test_async.c,v 1.62 2009/04/28 13:01:09 drh Exp $ ** ** This file contains a binding of the asynchronous IO extension interface ** (defined in ext/async/sqlite3async.h) to Tcl. @@ -240,4 +240,3 @@ int Sqlitetestasync_Init(Tcl_Interp *interp){ #endif /* SQLITE_ENABLE_ASYNCIO */ return TCL_OK; } - diff --git a/src/trigger.c b/src/trigger.c index 98a49eddcd..2674a019e7 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -10,7 +10,7 @@ ************************************************************************* ** ** -** $Id: trigger.c,v 1.136 2009/04/23 13:22:44 drh Exp $ +** $Id: trigger.c,v 1.137 2009/04/28 13:01:09 drh Exp $ */ #include "sqliteInt.h" @@ -285,7 +285,7 @@ void sqlite3FinishTrigger( db->mallocFailed = 1; }else if( pLink->pSchema==pLink->pTabSchema ){ Table *pTab; - int n = sqlite3Strlen30(pLink->table) + 1; + int n = sqlite3Strlen30(pLink->table); pTab = sqlite3HashFind(&pLink->pTabSchema->tblHash, pLink->table, n); assert( pTab!=0 ); pLink->pNext = pTab->pTrigger; @@ -512,7 +512,7 @@ drop_trigger_cleanup: ** is set on. */ static Table *tableOfTrigger(Trigger *pTrigger){ - int n = sqlite3Strlen30(pTrigger->table) + 1; + int n = sqlite3Strlen30(pTrigger->table); return sqlite3HashFind(&pTrigger->pTabSchema->tblHash, pTrigger->table, n); } diff --git a/src/vtab.c b/src/vtab.c index e2103bdbc3..10d686035f 100644 --- a/src/vtab.c +++ b/src/vtab.c @@ -11,7 +11,7 @@ ************************************************************************* ** This file contains code used to help implement virtual tables. ** -** $Id: vtab.c,v 1.85 2009/04/11 16:27:20 drh Exp $ +** $Id: vtab.c,v 1.86 2009/04/28 13:01:09 drh Exp $ */ #ifndef SQLITE_OMIT_VIRTUALTABLE #include "sqliteInt.h" @@ -308,7 +308,7 @@ void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){ Table *pOld; Schema *pSchema = pTab->pSchema; const char *zName = pTab->zName; - int nName = sqlite3Strlen30(zName) + 1; + int nName = sqlite3Strlen30(zName); pOld = sqlite3HashInsert(&pSchema->tblHash, zName, nName, pTab); if( pOld ){ db->mallocFailed = 1;