diff options
author | dan <dan@noemail.net> | 2010-06-03 09:01:11 +0000 |
---|---|---|
committer | dan <dan@noemail.net> | 2010-06-03 09:01:11 +0000 |
commit | 8e64db2b09941145bdeba3ef68850960945a34d5 (patch) | |
tree | 2804628dd02024fe9310cbecaa9bd9348f1534d9 /src | |
parent | 2d37e1cfb90fa6bbabdcd88bb86dbce86c30a13b (diff) | |
download | sqlite-8e64db2b09941145bdeba3ef68850960945a34d5.tar.gz sqlite-8e64db2b09941145bdeba3ef68850960945a34d5.zip |
If a malloc fails while allocating a savepoint object at the pager level, do not try to roll that savepoint back later on.
FossilOrigin-Name: 91cb08ffb6332a142542c012b58aa49206ee5704
Diffstat (limited to 'src')
-rw-r--r-- | src/pager.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/pager.c b/src/pager.c index 416e9ed13..3dbc01f2a 100644 --- a/src/pager.c +++ b/src/pager.c @@ -5449,7 +5449,6 @@ int sqlite3PagerOpenSavepoint(Pager *pPager, int nSavepoint){ } memset(&aNew[nCurrent], 0, (nSavepoint-nCurrent) * sizeof(PagerSavepoint)); pPager->aSavepoint = aNew; - pPager->nSavepoint = nSavepoint; /* Populate the PagerSavepoint structures just allocated. */ for(ii=nCurrent; ii<nSavepoint; ii++){ @@ -5467,7 +5466,9 @@ int sqlite3PagerOpenSavepoint(Pager *pPager, int nSavepoint){ if( pagerUseWal(pPager) ){ sqlite3WalSavepoint(pPager->pWal, aNew[ii].aWalData); } + pPager->nSavepoint = ii+1; } + assert( pPager->nSavepoint==nSavepoint ); /* Open the sub-journal, if it is not already opened. */ rc = openSubJournal(pPager); |