diff options
author | drh <drh@noemail.net> | 2016-10-03 01:21:51 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2016-10-03 01:21:51 +0000 |
commit | cb43a937e57113a21ee0b2ef52a532073c8d3a2d (patch) | |
tree | 71d34aeef018ea126e78b2eab4ca89b7115d055d /src/backup.c | |
parent | 1a7df58c1aae72f73c183ec7a48a19d773177ccb (diff) | |
download | sqlite-cb43a937e57113a21ee0b2ef52a532073c8d3a2d.tar.gz sqlite-cb43a937e57113a21ee0b2ef52a532073c8d3a2d.zip |
Allocate Parse objects off of the stack where appropriate for a substantial
performance increase and a size reduction.
FossilOrigin-Name: ea8affa9e453b201b479162f621b591e7a65a489
Diffstat (limited to 'src/backup.c')
-rw-r--r-- | src/backup.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/src/backup.c b/src/backup.c index eb8f15cc7..165144d96 100644 --- a/src/backup.c +++ b/src/backup.c @@ -83,22 +83,16 @@ static Btree *findBtree(sqlite3 *pErrorDb, sqlite3 *pDb, const char *zDb){ int i = sqlite3FindDbName(pDb, zDb); if( i==1 ){ - Parse *pParse; + Parse sParse; int rc = 0; - pParse = sqlite3StackAllocZero(pErrorDb, sizeof(*pParse)); - if( pParse==0 ){ - sqlite3ErrorWithMsg(pErrorDb, SQLITE_NOMEM, "out of memory"); - rc = SQLITE_NOMEM_BKPT; - }else{ - pParse->db = pDb; - if( sqlite3OpenTempDatabase(pParse) ){ - sqlite3ErrorWithMsg(pErrorDb, pParse->rc, "%s", pParse->zErrMsg); - rc = SQLITE_ERROR; - } - sqlite3DbFree(pErrorDb, pParse->zErrMsg); - sqlite3ParserReset(pParse); - sqlite3StackFree(pErrorDb, pParse); + memset(&sParse, 0, sizeof(sParse)); + sParse.db = pDb; + if( sqlite3OpenTempDatabase(&sParse) ){ + sqlite3ErrorWithMsg(pErrorDb, sParse.rc, "%s", sParse.zErrMsg); + rc = SQLITE_ERROR; } + sqlite3DbFree(pErrorDb, sParse.zErrMsg); + sqlite3ParserReset(&sParse); if( rc ){ return 0; } |