aboutsummaryrefslogtreecommitdiff
path: root/src/backup.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2012-01-10 16:40:50 +0000
committerdrh <drh@noemail.net>2012-01-10 16:40:50 +0000
commit2bfe5b316c4fefcb39c74ca5dfbf7b5ae4ad905d (patch)
treefe46e0186daeaa9d1f867d7ee1917a3fc7c45834 /src/backup.c
parent92c45cf0fe3b38869c560050ce04fcb4559570b5 (diff)
downloadsqlite-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.c5
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;