diff options
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; |