1
0
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:
drh
2015-07-01 19:59:36 +00:00
parent e05b3f8f0b
commit 14681b739b
3 changed files with 18 additions and 11 deletions

View File

@@ -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);
}
/*