aboutsummaryrefslogtreecommitdiff
path: root/ext/misc/unionvtab.c
diff options
context:
space:
mode:
authormistachkin <mistachkin@noemail.net>2018-01-09 22:23:42 +0000
committermistachkin <mistachkin@noemail.net>2018-01-09 22:23:42 +0000
commitdc006e05aa8ed9181b14924aa742e072dabba79a (patch)
treef9abd54cc8d0473759cf10645d04051426c038aa /ext/misc/unionvtab.c
parent7026bd67531ab5fb219ea928be456a9dee9e0937 (diff)
downloadsqlite-dc006e05aa8ed9181b14924aa742e072dabba79a.tar.gz
sqlite-dc006e05aa8ed9181b14924aa742e072dabba79a.zip
When disconnecting from the 'swarmvtab' extension, close each database prior to invoking the 'openclose' function on it.
FossilOrigin-Name: 3e5647cb6c4553683e24b9cb62548f16c79c4e2ac9e39cf135ea52a623f7cc33
Diffstat (limited to 'ext/misc/unionvtab.c')
-rw-r--r--ext/misc/unionvtab.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/misc/unionvtab.c b/ext/misc/unionvtab.c
index 92d0b833c..94a5c8f01 100644
--- a/ext/misc/unionvtab.c
+++ b/ext/misc/unionvtab.c
@@ -484,14 +484,15 @@ static int unionDisconnect(sqlite3_vtab *pVtab){
int i;
for(i=0; i<pTab->nSrc; i++){
UnionSrc *pSrc = &pTab->aSrc[i];
- if( pSrc->db ){
+ int bHaveSrcDb = (pSrc->db!=0);
+ sqlite3_close(pSrc->db);
+ if( bHaveSrcDb ){
unionInvokeOpenClose(pTab, pSrc, 1, 0);
}
sqlite3_free(pSrc->zDb);
sqlite3_free(pSrc->zTab);
sqlite3_free(pSrc->zFile);
sqlite3_free(pSrc->zContext);
- sqlite3_close(pSrc->db);
}
sqlite3_finalize(pTab->pNotFound);
sqlite3_finalize(pTab->pOpenClose);