diff options
author | drh <drh@noemail.net> | 2012-01-10 16:40:50 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2012-01-10 16:40:50 +0000 |
commit | 2bfe5b316c4fefcb39c74ca5dfbf7b5ae4ad905d (patch) | |
tree | fe46e0186daeaa9d1f867d7ee1917a3fc7c45834 /src/backup.c | |
parent | 92c45cf0fe3b38869c560050ce04fcb4559570b5 (diff) | |
download | sqlite-2bfe5b316c4fefcb39c74ca5dfbf7b5ae4ad905d.tar.gz sqlite-2bfe5b316c4fefcb39c74ca5dfbf7b5ae4ad905d.zip |
Check the return code from sqlite3OsFileControl() in sqlite3BtreeCopyFile()
and report any errors that it generates.
FossilOrigin-Name: 7f852ac6435f1c9e25b07f816cca5ba40484579e
Diffstat (limited to 'src/backup.c')
-rw-r--r-- | src/backup.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backup.c b/src/backup.c index 0e99e35b7..aa3401897 100644 --- a/src/backup.c +++ b/src/backup.c @@ -678,7 +678,9 @@ int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){ pFd = sqlite3PagerFile(sqlite3BtreePager(pTo)); if( pFd->pMethods ){ i64 nByte = sqlite3BtreeGetPageSize(pFrom)*(i64)sqlite3BtreeLastPage(pFrom); - sqlite3OsFileControl(pFd, SQLITE_FCNTL_OVERWRITE, &nByte); + rc = sqlite3OsFileControl(pFd, SQLITE_FCNTL_OVERWRITE, &nByte); + if( rc==SQLITE_NOTFOUND ) rc = SQLITE_OK; + if( rc ) goto copy_finished; } /* Set up an sqlite3_backup object. sqlite3_backup.pDestDb must be set @@ -709,6 +711,7 @@ int sqlite3BtreeCopyFile(Btree *pTo, Btree *pFrom){ } assert( sqlite3BtreeIsInTrans(pTo)==0 ); +copy_finished: sqlite3BtreeLeave(pFrom); sqlite3BtreeLeave(pTo); return rc; |