summaryrefslogtreecommitdiffstats
path: root/lib/libsqlite3/src/backup.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libsqlite3/src/backup.c')
-rw-r--r--lib/libsqlite3/src/backup.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/libsqlite3/src/backup.c b/lib/libsqlite3/src/backup.c
index 81c8b5c5f4f..94e578d9df0 100644
--- a/lib/libsqlite3/src/backup.c
+++ b/lib/libsqlite3/src/backup.c
@@ -685,9 +685,13 @@ int sqlite3_backup_pagecount(sqlite3_backup *p){
** corresponding to the source database is held when this function is
** called.
*/
-void sqlite3BackupUpdate(sqlite3_backup *pBackup, Pgno iPage, const u8 *aData){
- sqlite3_backup *p; /* Iterator variable */
- for(p=pBackup; p; p=p->pNext){
+static SQLITE_NOINLINE void backupUpdate(
+ sqlite3_backup *p,
+ Pgno iPage,
+ const u8 *aData
+){
+ assert( p!=0 );
+ do{
assert( sqlite3_mutex_held(p->pSrc->pBt->mutex) );
if( !isFatalError(p->rc) && iPage<p->iNext ){
/* The backup process p has already copied page iPage. But now it
@@ -704,7 +708,10 @@ void sqlite3BackupUpdate(sqlite3_backup *pBackup, Pgno iPage, const u8 *aData){
p->rc = rc;
}
}
- }
+ }while( (p = p->pNext)!=0 );
+}
+void sqlite3BackupUpdate(sqlite3_backup *pBackup, Pgno iPage, const u8 *aData){
+ if( pBackup ) backupUpdate(pBackup, iPage, aData);
}
/*