mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-08 14:02:16 +03:00
Do not store the zero string terminator as part of the name when holding
symbols in the symbol table. (CVS 6557) FossilOrigin-Name: 23d67af39227aeade2ea0292e1b8844eea580993
This commit is contained in:
22
manifest
22
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)
|
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-28T12:08:15
|
D 2009-04-28T13:01:09
|
||||||
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
|
||||||
F Makefile.in 583e87706abc3026960ed759aff6371faf84c211
|
F Makefile.in 583e87706abc3026960ed759aff6371faf84c211
|
||||||
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
|
||||||
@@ -109,7 +109,7 @@ F src/btmutex.c 9b899c0d8df3bd68f527b0afe03088321b696d3c
|
|||||||
F src/btree.c b4ec46b3adc3e2d82704c949d4b654b031a64ad6
|
F src/btree.c b4ec46b3adc3e2d82704c949d4b654b031a64ad6
|
||||||
F src/btree.h 99fcc7e8c4a1e35afe271bcb38de1a698dfc904e
|
F src/btree.h 99fcc7e8c4a1e35afe271bcb38de1a698dfc904e
|
||||||
F src/btreeInt.h df64030d632f8c8ac217ed52e8b6b3eacacb33a5
|
F src/btreeInt.h df64030d632f8c8ac217ed52e8b6b3eacacb33a5
|
||||||
F src/build.c 2a50f5e65ab00fb2443af8df5a3130a2eb644b25
|
F src/build.c dca0ad77c88cb00f6a11cc080a4f3285672cfa37
|
||||||
F src/callback.c 73016376d6848ba987709e8c9048d4f0e0776036
|
F src/callback.c 73016376d6848ba987709e8c9048d4f0e0776036
|
||||||
F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
|
F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
|
||||||
F src/date.c d327ec7bb2f64b08d32b1035de82b9ba8675de91
|
F src/date.c d327ec7bb2f64b08d32b1035de82b9ba8675de91
|
||||||
@@ -118,7 +118,7 @@ F src/expr.c dd763d6dc8f8329e895440d436c28aa7b5b3595e
|
|||||||
F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
|
F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
|
||||||
F src/func.c f667fe886309707c7178542073bb0ced00a9fae7
|
F src/func.c f667fe886309707c7178542073bb0ced00a9fae7
|
||||||
F src/global.c 448419c44ce0701104c2121b0e06919b44514c0c
|
F src/global.c 448419c44ce0701104c2121b0e06919b44514c0c
|
||||||
F src/hash.c 5824e6ff7ba78cd34c8d6cd724367713583e5b55
|
F src/hash.c 15d39cbe87de9b9991054750bd3e0861888b7b06
|
||||||
F src/hash.h 28f38ebb1006a5beedcb013bcdfe31befe7437ae
|
F src/hash.h 28f38ebb1006a5beedcb013bcdfe31befe7437ae
|
||||||
F src/hwtime.h 4a1d45f4cae1f402ea19686acf24acf4f0cb53cb
|
F src/hwtime.h 4a1d45f4cae1f402ea19686acf24acf4f0cb53cb
|
||||||
F src/insert.c 71286d081a919a27ef22eaeccbe2718f93dc6aa9
|
F src/insert.c 71286d081a919a27ef22eaeccbe2718f93dc6aa9
|
||||||
@@ -176,7 +176,7 @@ F src/test6.c 1a0a7a1f179469044b065b4a88aab9faee114101
|
|||||||
F src/test7.c b94e68c2236de76889d82b8d7d8e00ad6a4d80b1
|
F src/test7.c b94e68c2236de76889d82b8d7d8e00ad6a4d80b1
|
||||||
F src/test8.c b1061548f7ce3aeedea3cc4d649ee1487c2b4eaf
|
F src/test8.c b1061548f7ce3aeedea3cc4d649ee1487c2b4eaf
|
||||||
F src/test9.c 963d380922f25c1c323712d05db01b19197ee6f7
|
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_autoext.c f53b0cdf7bf5f08100009572a5d65cdb540bd0ad
|
||||||
F src/test_backup.c 1384a18985a5a2d275c2662e48473bf1542ebd08
|
F src/test_backup.c 1384a18985a5a2d275c2662e48473bf1542ebd08
|
||||||
F src/test_btree.c d7b8716544611c323860370ee364e897c861f1b0
|
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_thread.c b8a1ab7ca1a632f18e8a361880d5d65eeea08eac
|
||||||
F src/test_wsd.c 3ae5101de6cbfda2720152ab659ea84079719241
|
F src/test_wsd.c 3ae5101de6cbfda2720152ab659ea84079719241
|
||||||
F src/tokenize.c 7bd3b6dd56566604ad24ed4aa017e6618166b500
|
F src/tokenize.c 7bd3b6dd56566604ad24ed4aa017e6618166b500
|
||||||
F src/trigger.c c029d5262768faa43962080a170bb707afa0b9d7
|
F src/trigger.c 448615bec40efcd6b3a9362a060f2e7067f25be5
|
||||||
F src/update.c 5062f0f042f67a4da0aff69949f145e2bc96e3cd
|
F src/update.c 5062f0f042f67a4da0aff69949f145e2bc96e3cd
|
||||||
F src/utf.c 9541d28f40441812c0b40f00334372a0542c00ff
|
F src/utf.c 9541d28f40441812c0b40f00334372a0542c00ff
|
||||||
F src/util.c 828c552a22a1d5b650b8a5ea0009546715c45d93
|
F src/util.c 828c552a22a1d5b650b8a5ea0009546715c45d93
|
||||||
@@ -210,7 +210,7 @@ F src/vdbeapi.c 86aa27a5f3493aaffb8ac051782aa3b22670d7ed
|
|||||||
F src/vdbeaux.c 34524d499fc6081e97771dcfdf6c2523d5877ef5
|
F src/vdbeaux.c 34524d499fc6081e97771dcfdf6c2523d5877ef5
|
||||||
F src/vdbeblob.c e67757450ae8581a8b354d9d7e467e41502dfe38
|
F src/vdbeblob.c e67757450ae8581a8b354d9d7e467e41502dfe38
|
||||||
F src/vdbemem.c 111d8193859d16aefd5d3cb57472808584ea5503
|
F src/vdbemem.c 111d8193859d16aefd5d3cb57472808584ea5503
|
||||||
F src/vtab.c 6118d71c5137e20a7ac51fb5d9beb0361fbedb89
|
F src/vtab.c 53355aa2381ec3ef2eaad25672cfd5877a02fe45
|
||||||
F src/walker.c 7cdf63223c953d4343c6833e940f110281a378ee
|
F src/walker.c 7cdf63223c953d4343c6833e940f110281a378ee
|
||||||
F src/where.c d20e083e5cc549a04f1647ee180d3bc3d2c73c02
|
F src/where.c d20e083e5cc549a04f1647ee180d3bc3d2c73c02
|
||||||
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
|
||||||
@@ -725,7 +725,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
|
|||||||
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
|
||||||
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
|
||||||
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
|
||||||
P a37d1174eb80e9a09522b236afdb47283f312d06
|
P e096f90a57f0e0d1dbeaafc72762035ca55ab803
|
||||||
R f42d9cf54c9eec4f9aff568e256db111
|
R f73743cb4e4b683f902aa1f7603e9fc9
|
||||||
U danielk1977
|
U drh
|
||||||
Z 4597ce858abcbcdbae0b3edd7f439fd4
|
Z d3fa05c89f737695a94e4772c7919db7
|
||||||
|
@@ -1 +1 @@
|
|||||||
e096f90a57f0e0d1dbeaafc72762035ca55ab803
|
23d67af39227aeade2ea0292e1b8844eea580993
|
22
src/build.c
22
src/build.c
@@ -22,7 +22,7 @@
|
|||||||
** COMMIT
|
** COMMIT
|
||||||
** ROLLBACK
|
** 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"
|
#include "sqliteInt.h"
|
||||||
|
|
||||||
@@ -261,7 +261,7 @@ Table *sqlite3FindTable(sqlite3 *db, const char *zName, const char *zDatabase){
|
|||||||
int i;
|
int i;
|
||||||
int nName;
|
int nName;
|
||||||
assert( zName!=0 );
|
assert( zName!=0 );
|
||||||
nName = sqlite3Strlen(db, zName) + 1;
|
nName = sqlite3Strlen(db, zName);
|
||||||
for(i=OMIT_TEMPDB; i<db->nDb; i++){
|
for(i=OMIT_TEMPDB; i<db->nDb; i++){
|
||||||
int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */
|
int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */
|
||||||
if( zDatabase!=0 && sqlite3StrICmp(zDatabase, db->aDb[j].zName) ) continue;
|
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 *sqlite3FindIndex(sqlite3 *db, const char *zName, const char *zDb){
|
||||||
Index *p = 0;
|
Index *p = 0;
|
||||||
int i;
|
int i;
|
||||||
int nName = sqlite3Strlen(db, zName)+1;
|
int nName = sqlite3Strlen(db, zName);
|
||||||
for(i=OMIT_TEMPDB; i<db->nDb; i++){
|
for(i=OMIT_TEMPDB; i<db->nDb; i++){
|
||||||
int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */
|
int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */
|
||||||
Schema *pSchema = db->aDb[j].pSchema;
|
Schema *pSchema = db->aDb[j].pSchema;
|
||||||
@@ -359,7 +359,7 @@ static void sqlite3DeleteIndex(Index *p){
|
|||||||
const char *zName = p->zName;
|
const char *zName = p->zName;
|
||||||
|
|
||||||
pOld = sqlite3HashInsert(&p->pSchema->idxHash, zName,
|
pOld = sqlite3HashInsert(&p->pSchema->idxHash, zName,
|
||||||
sqlite3Strlen30(zName)+1, 0);
|
sqlite3Strlen30(zName), 0);
|
||||||
assert( pOld==0 || pOld==p );
|
assert( pOld==0 || pOld==p );
|
||||||
freeIndex(p);
|
freeIndex(p);
|
||||||
}
|
}
|
||||||
@@ -376,7 +376,7 @@ void sqlite3UnlinkAndDeleteIndex(sqlite3 *db, int iDb, const char *zIdxName){
|
|||||||
Hash *pHash = &db->aDb[iDb].pSchema->idxHash;
|
Hash *pHash = &db->aDb[iDb].pSchema->idxHash;
|
||||||
|
|
||||||
len = sqlite3Strlen(db, zIdxName);
|
len = sqlite3Strlen(db, zIdxName);
|
||||||
pIndex = sqlite3HashInsert(pHash, zIdxName, len+1, 0);
|
pIndex = sqlite3HashInsert(pHash, zIdxName, len, 0);
|
||||||
if( pIndex ){
|
if( pIndex ){
|
||||||
if( pIndex->pTable->pIndex==pIndex ){
|
if( pIndex->pTable->pIndex==pIndex ){
|
||||||
pIndex->pTable->pIndex = pIndex->pNext;
|
pIndex->pTable->pIndex = pIndex->pNext;
|
||||||
@@ -524,7 +524,7 @@ void sqlite3DeleteTable(Table *pTable){
|
|||||||
for(pFKey=pTable->pFKey; pFKey; pFKey=pNextFKey){
|
for(pFKey=pTable->pFKey; pFKey; pFKey=pNextFKey){
|
||||||
pNextFKey = pFKey->pNextFrom;
|
pNextFKey = pFKey->pNextFrom;
|
||||||
assert( sqlite3HashFind(&pTable->pSchema->aFKey,
|
assert( sqlite3HashFind(&pTable->pSchema->aFKey,
|
||||||
pFKey->zTo, sqlite3Strlen30(pFKey->zTo)+1)!=pFKey );
|
pFKey->zTo, sqlite3Strlen30(pFKey->zTo))!=pFKey );
|
||||||
sqlite3DbFree(db, pFKey);
|
sqlite3DbFree(db, pFKey);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -556,11 +556,11 @@ void sqlite3UnlinkAndDeleteTable(sqlite3 *db, int iDb, const char *zTabName){
|
|||||||
assert( zTabName && zTabName[0] );
|
assert( zTabName && zTabName[0] );
|
||||||
pDb = &db->aDb[iDb];
|
pDb = &db->aDb[iDb];
|
||||||
p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName,
|
p = sqlite3HashInsert(&pDb->pSchema->tblHash, zTabName,
|
||||||
sqlite3Strlen30(zTabName)+1,0);
|
sqlite3Strlen30(zTabName),0);
|
||||||
if( p ){
|
if( p ){
|
||||||
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
||||||
for(pF1=p->pFKey; pF1; pF1=pF1->pNextFrom){
|
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);
|
pF2 = sqlite3HashFind(&pDb->pSchema->aFKey, pF1->zTo, nTo);
|
||||||
if( pF2==pF1 ){
|
if( pF2==pF1 ){
|
||||||
sqlite3HashInsert(&pDb->pSchema->aFKey, pF1->zTo, nTo, pF1->pNextTo);
|
sqlite3HashInsert(&pDb->pSchema->aFKey, pF1->zTo, nTo, pF1->pNextTo);
|
||||||
@@ -1688,7 +1688,7 @@ void sqlite3EndTable(
|
|||||||
FKey *pFKey;
|
FKey *pFKey;
|
||||||
Schema *pSchema = p->pSchema;
|
Schema *pSchema = p->pSchema;
|
||||||
pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName,
|
pOld = sqlite3HashInsert(&pSchema->tblHash, p->zName,
|
||||||
sqlite3Strlen30(p->zName)+1,p);
|
sqlite3Strlen30(p->zName),p);
|
||||||
if( pOld ){
|
if( pOld ){
|
||||||
assert( p==pOld ); /* Malloc must have failed inside HashInsert() */
|
assert( p==pOld ); /* Malloc must have failed inside HashInsert() */
|
||||||
db->mallocFailed = 1;
|
db->mallocFailed = 1;
|
||||||
@@ -1697,7 +1697,7 @@ void sqlite3EndTable(
|
|||||||
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
||||||
for(pFKey=p->pFKey; pFKey; pFKey=pFKey->pNextFrom){
|
for(pFKey=p->pFKey; pFKey; pFKey=pFKey->pNextFrom){
|
||||||
void *data;
|
void *data;
|
||||||
int nTo = sqlite3Strlen30(pFKey->zTo) + 1;
|
int nTo = sqlite3Strlen30(pFKey->zTo);
|
||||||
pFKey->pNextTo = sqlite3HashFind(&pSchema->aFKey, pFKey->zTo, nTo);
|
pFKey->pNextTo = sqlite3HashFind(&pSchema->aFKey, pFKey->zTo, nTo);
|
||||||
data = sqlite3HashInsert(&pSchema->aFKey, pFKey->zTo, nTo, pFKey);
|
data = sqlite3HashInsert(&pSchema->aFKey, pFKey->zTo, nTo, pFKey);
|
||||||
if( data==(void *)pFKey ){
|
if( data==(void *)pFKey ){
|
||||||
@@ -2742,7 +2742,7 @@ void sqlite3CreateIndex(
|
|||||||
if( db->init.busy ){
|
if( db->init.busy ){
|
||||||
Index *p;
|
Index *p;
|
||||||
p = sqlite3HashInsert(&pIndex->pSchema->idxHash,
|
p = sqlite3HashInsert(&pIndex->pSchema->idxHash,
|
||||||
pIndex->zName, sqlite3Strlen30(pIndex->zName)+1,
|
pIndex->zName, sqlite3Strlen30(pIndex->zName),
|
||||||
pIndex);
|
pIndex);
|
||||||
if( p ){
|
if( p ){
|
||||||
assert( p==pIndex ); /* Malloc must have failed */
|
assert( p==pIndex ); /* Malloc must have failed */
|
||||||
|
@@ -12,7 +12,7 @@
|
|||||||
** This is the implementation of generic hash-tables
|
** This is the implementation of generic hash-tables
|
||||||
** used in SQLite.
|
** 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 "sqliteInt.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -63,7 +63,7 @@ void sqlite3HashClear(Hash *pH){
|
|||||||
static int strHash(const void *pKey, int nKey){
|
static int strHash(const void *pKey, int nKey){
|
||||||
const char *z = (const char *)pKey;
|
const char *z = (const char *)pKey;
|
||||||
int h = 0;
|
int h = 0;
|
||||||
if( nKey<=0 ) nKey = sqlite3Strlen30(z);
|
assert( nKey>0 );
|
||||||
while( nKey > 0 ){
|
while( nKey > 0 ){
|
||||||
h = (h<<3) ^ h ^ sqlite3UpperToLower[(unsigned char)*z++];
|
h = (h<<3) ^ h ^ sqlite3UpperToLower[(unsigned char)*z++];
|
||||||
nKey--;
|
nKey--;
|
||||||
|
@@ -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
|
** This file contains a binding of the asynchronous IO extension interface
|
||||||
** (defined in ext/async/sqlite3async.h) to Tcl.
|
** (defined in ext/async/sqlite3async.h) to Tcl.
|
||||||
@@ -240,4 +240,3 @@ int Sqlitetestasync_Init(Tcl_Interp *interp){
|
|||||||
#endif /* SQLITE_ENABLE_ASYNCIO */
|
#endif /* SQLITE_ENABLE_ASYNCIO */
|
||||||
return TCL_OK;
|
return TCL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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"
|
#include "sqliteInt.h"
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@ void sqlite3FinishTrigger(
|
|||||||
db->mallocFailed = 1;
|
db->mallocFailed = 1;
|
||||||
}else if( pLink->pSchema==pLink->pTabSchema ){
|
}else if( pLink->pSchema==pLink->pTabSchema ){
|
||||||
Table *pTab;
|
Table *pTab;
|
||||||
int n = sqlite3Strlen30(pLink->table) + 1;
|
int n = sqlite3Strlen30(pLink->table);
|
||||||
pTab = sqlite3HashFind(&pLink->pTabSchema->tblHash, pLink->table, n);
|
pTab = sqlite3HashFind(&pLink->pTabSchema->tblHash, pLink->table, n);
|
||||||
assert( pTab!=0 );
|
assert( pTab!=0 );
|
||||||
pLink->pNext = pTab->pTrigger;
|
pLink->pNext = pTab->pTrigger;
|
||||||
@@ -512,7 +512,7 @@ drop_trigger_cleanup:
|
|||||||
** is set on.
|
** is set on.
|
||||||
*/
|
*/
|
||||||
static Table *tableOfTrigger(Trigger *pTrigger){
|
static Table *tableOfTrigger(Trigger *pTrigger){
|
||||||
int n = sqlite3Strlen30(pTrigger->table) + 1;
|
int n = sqlite3Strlen30(pTrigger->table);
|
||||||
return sqlite3HashFind(&pTrigger->pTabSchema->tblHash, pTrigger->table, n);
|
return sqlite3HashFind(&pTrigger->pTabSchema->tblHash, pTrigger->table, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -11,7 +11,7 @@
|
|||||||
*************************************************************************
|
*************************************************************************
|
||||||
** This file contains code used to help implement virtual tables.
|
** 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
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
@@ -308,7 +308,7 @@ void sqlite3VtabFinishParse(Parse *pParse, Token *pEnd){
|
|||||||
Table *pOld;
|
Table *pOld;
|
||||||
Schema *pSchema = pTab->pSchema;
|
Schema *pSchema = pTab->pSchema;
|
||||||
const char *zName = pTab->zName;
|
const char *zName = pTab->zName;
|
||||||
int nName = sqlite3Strlen30(zName) + 1;
|
int nName = sqlite3Strlen30(zName);
|
||||||
pOld = sqlite3HashInsert(&pSchema->tblHash, zName, nName, pTab);
|
pOld = sqlite3HashInsert(&pSchema->tblHash, zName, nName, pTab);
|
||||||
if( pOld ){
|
if( pOld ){
|
||||||
db->mallocFailed = 1;
|
db->mallocFailed = 1;
|
||||||
|
Reference in New Issue
Block a user