aboutsummaryrefslogtreecommitdiff
path: root/src/backup.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2012-10-09 14:58:15 +0000
committerdrh <drh@noemail.net>2012-10-09 14:58:15 +0000
commitd1102b1ec7d50045cbbcf2575eacb2d423361fc7 (patch)
treea586e444e7362a6cf02fa05c85311851e36abb97 /src/backup.c
parentc4645dacfb435002911b187b474fa0788db9cde0 (diff)
parent5a55826bcda624f8fa4a3b7cc0c8845a689d8957 (diff)
downloadsqlite-d1102b1ec7d50045cbbcf2575eacb2d423361fc7.tar.gz
sqlite-d1102b1ec7d50045cbbcf2575eacb2d423361fc7.zip
Merge the latest trunk changes, especially the ORDER BY optimizer enhancements
but also other fixes, onto the sessions branch. FossilOrigin-Name: f1fbb8c5bfa84e84e0b8e2872d83b06a0c0d5acc
Diffstat (limited to 'src/backup.c')
-rw-r--r--src/backup.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/backup.c b/src/backup.c
index 4881215e9..6abc11c20 100644
--- a/src/backup.c
+++ b/src/backup.c
@@ -219,13 +219,16 @@ static int backupOnePage(sqlite3_backup *p, Pgno iSrcPg, const u8 *zSrcData){
const int nCopy = MIN(nSrcPgsz, nDestPgsz);
const i64 iEnd = (i64)iSrcPg*(i64)nSrcPgsz;
#ifdef SQLITE_HAS_CODEC
- int nSrcReserve = sqlite3BtreeGetReserve(p->pSrc);
+ /* Use BtreeGetReserveNoMutex() for the source b-tree, as although it is
+ ** guaranteed that the shared-mutex is held by this thread, handle
+ ** p->pSrc may not actually be the owner. */
+ int nSrcReserve = sqlite3BtreeGetReserveNoMutex(p->pSrc);
int nDestReserve = sqlite3BtreeGetReserve(p->pDest);
#endif
-
int rc = SQLITE_OK;
i64 iOff;
+ assert( sqlite3BtreeGetReserveNoMutex(p->pSrc)>=0 );
assert( p->bDestLocked );
assert( !isFatalError(p->rc) );
assert( iSrcPg!=PENDING_BYTE_PAGE(p->pSrc->pBt) );