From bdc2df79b6aa09d16159a04d3a2cab90bf5f2efb Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 2 Jun 2000 02:09:23 +0000 Subject: [PATCH] :-) (CVS 1696) FossilOrigin-Name: 80d925b82b176df7f73a1747a6ed711ac3d9a0d3 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/dbbe.c | 32 +++++++++++++++++++++++--------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/manifest b/manifest index 1c194ac946..768afc75df 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C :-)\s(CVS\s36) -D 2000-06-02T01:51:20 +C :-)\s(CVS\s1696) +D 2000-06-02T02:09:23 F COPYRIGHT 74a8a6531a42e124df07ab5599aad63870fa0bd4 F Makefile.in 7ac2fef265940d93a544cb454efa836451559a71 F README 6b5960603c7f8bf42fc022b4b6436f242f238dbb @@ -7,7 +7,7 @@ F configure 00a5b5c82147a576fa6e82d7c1b0d55c321d6d2c x F configure.in 6ccfd5fc80517f7cfe605a7fc7e0f62d962a233c F doc/lemon.html e233a3e97a779c7a87e1bc4528c664a58e49dd47 F src/build.c f56c47f08c2f01fd640abb920c5da6b6614fbf3f -F src/dbbe.c a217499fb539c5b5db99f1d37c20276b6f0d60a8 +F src/dbbe.c ce2d78a92a14c874443fda3069fde06d330807df F src/dbbe.h a8a46f71238e0f09f3ec08fd9d1c8c7f4cdc49bf F src/delete.c e11433c14ed5cc8553cba14296b3baa3c23054bc F src/expr.c 91970700e3e39b2b725b028c166f588a5bb0c038 @@ -45,7 +45,7 @@ F www/c_interface.tcl f875864edf7974157d1c257ca08de854660882a5 F www/changes.tcl 37f4906f0b03f2160d2b2e4ed3cedb0b91d253cb F www/index.tcl 001f8c8c4edbe20e25c508005a12f2f265f84c9c F www/sqlite.tcl 2a0056dd6d78839636176b770d9f37d12e66660e -P a57ecd606c8caa67db240d1a4bc46c0a590fde0c -R 565c3c2b5d29c5df35ef5486eca899a0 +P d3c31defbaf25f470d0977c39325890ab8bad054 +R 1972cc5d0dec5079acb55afe886914ee U drh -Z e4f014f9c30a1cd8b033307faacb4b20 +Z b89a6085ec647850e84316905c71acda diff --git a/manifest.uuid b/manifest.uuid index 4318437ebe..3c1a1f58b2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d3c31defbaf25f470d0977c39325890ab8bad054 \ No newline at end of file +80d925b82b176df7f73a1747a6ed711ac3d9a0d3 \ No newline at end of file diff --git a/src/dbbe.c b/src/dbbe.c index 86001ca4b0..ec3cb33a42 100644 --- a/src/dbbe.c +++ b/src/dbbe.c @@ -30,7 +30,7 @@ ** relatively simple to convert to a different database such ** as NDBM, SDBM, or BerkeleyDB. ** -** $Id: dbbe.c,v 1.9 2000/06/02 01:51:20 drh Exp $ +** $Id: dbbe.c,v 1.10 2000/06/02 02:09:23 drh Exp $ */ #include "sqliteInt.h" #include @@ -71,6 +71,7 @@ struct Dbbe { BeFile *pOpen; /* List of open files */ int nTemp; /* Number of temporary files created */ FILE **apTemp; /* Space to hold temporary file pointers */ + char **azTemp; /* Names of the temporary files */ struct rc4 rc4; /* The random number generator */ }; @@ -182,12 +183,25 @@ Dbbe *sqliteDbbeOpen( */ void sqliteDbbeClose(Dbbe *pBe){ BeFile *pFile, *pNext; + int i; for(pFile=pBe->pOpen; pFile; pFile=pNext){ pNext = pFile->pNext; gdbm_close(pFile->dbf); memset(pFile, 0, sizeof(*pFile)); sqliteFree(pFile); } + for(i=0; inTemp; i++){ + if( pBe->apTemp[i]!=0 ){ + unlink(pBe->azTemp[i]); + fclose(pBe->apTemp[i]); + sqliteFree(pBe->azTemp[i]); + pBe->apTemp[i] = 0; + pBe->azTemp[i] = 0; + break; + } + } + sqliteFree(pBe->azTemp); + sqliteFree(pBe->apTemp); memset(pBe, 0, sizeof(*pBe)); sqliteFree(pBe); } @@ -604,6 +618,7 @@ int sqliteDbbeOpenTempFile(Dbbe *pBe, FILE **ppFile){ if( i>=pBe->nTemp ){ pBe->nTemp++; pBe->apTemp = sqliteRealloc(pBe->apTemp, pBe->nTemp*sizeof(FILE*) ); + pBe->azTemp = sqliteRealloc(pBe->azTemp, pBe->nTemp*sizeof(char*) ); } if( pBe->apTemp==0 ){ *ppFile = 0; @@ -620,8 +635,11 @@ int sqliteDbbeOpenTempFile(Dbbe *pBe, FILE **ppFile){ *ppFile = pBe->apTemp[i] = fopen(zFile, "w+"); if( pBe->apTemp[i]==0 ){ rc = SQLITE_ERROR; + sqliteFree(zFile); + pBe->azTemp[i] = 0; + }else{ + pBe->azTemp[i] = zFile; } - sqliteFree(zFile); return rc; } @@ -632,14 +650,10 @@ void sqliteDbbeCloseTempFile(Dbbe *pBe, FILE *f){ int i; for(i=0; inTemp; i++){ if( pBe->apTemp[i]==f ){ - char *zFile; - char zBuf[30]; - sprintf(zBuf, "/_temp_%d~", i); - zFile = 0; - sqliteSetString(&zFile, pBe->zDir, zBuf, 0); - unlink(zFile); - sqliteFree(zFile); + unlink(pBe->azTemp[i]); + sqliteFree(pBe->azTemp[i]); pBe->apTemp[i] = 0; + pBe->azTemp[i] = 0; break; } } -- 2.47.3