]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do not store the zero string terminator as part of the name when holding
authordrh <drh@noemail.net>
Tue, 28 Apr 2009 13:01:09 +0000 (13:01 +0000)
committerdrh <drh@noemail.net>
Tue, 28 Apr 2009 13:01:09 +0000 (13:01 +0000)
symbols in the symbol table. (CVS 6557)

FossilOrigin-Name: 23d67af39227aeade2ea0292e1b8844eea580993

manifest
manifest.uuid
src/build.c
src/hash.c
src/test_async.c
src/trigger.c
src/vtab.c

index e922117f1a5b3c34c96f9ee2e06cc7b175a849fc..dcf7d2937151d8522a41cf9e1bd799dee427b97b 100644 (file)
--- 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
index f3749ea4b99268eab6abe8eca2b34901c43793d9..a865f104bfe60f7b5b7184d734c3022ab1eaca0b 100644 (file)
@@ -1 +1 @@
-e096f90a57f0e0d1dbeaafc72762035ca55ab803
\ No newline at end of file
+23d67af39227aeade2ea0292e1b8844eea580993
\ No newline at end of file
index 77a1f9543b6ebff2eae748d04788d8d76fa07989..f6e325aa8c4f706756b754e0fb06db1752f7728e 100644 (file)
@@ -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; i<db->nDb; 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; i<db->nDb; 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 */
index 013f41af55713324903586078f677079bc408d68..3761fb547917d9a602cc9161fd01c312f72fe831 100644 (file)
@@ -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 <assert.h>
@@ -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--;
index 4faa51ea94549fa23ac921d02d93ba0a783cdd81..52ed94bf3ae9f648a70165b67ffaa7a5c5e8b39c 100644 (file)
@@ -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;
 }
-
index 98a49eddcd019d58e69838389e34fe05d4bf5e5e..2674a019e71b268a3a982a4f7b22a8ce613308ae 100644 (file)
@@ -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);
 }
 
index e2103bdbc327667b349f5fb0b7fb1f645f141edd..10d686035f4acf687e00aabc523a8afca3d068ca 100644 (file)
@@ -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;