mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Avoid create a stack from in sqlite3BackupUpdate() in the common case where
the first argument is NULL. FossilOrigin-Name: 2a897b9e94acaf1fd91e9f8e94fa52e01694f011
This commit is contained in:
15
src/backup.c
15
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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user