Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Make greater use of the SQLITE_WITHIN macro. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
f2fc3aede55c8fa0351697f9f5ce4e54 |
User & Date: | drh 2015-12-16 13:07:35.753 |
Context
2015-12-17
| ||
13:28 | Fixes for harmless compiler warnings. (check-in: 85ebd46c70 user: drh tags: trunk) | |
2015-12-16
| ||
21:09 | Fix compiler warning seen with MSVC. (check-in: 18a4c0540b user: mistachkin tags: msvcWarn) | |
19:55 | Merge recent enhancements from trunk. (check-in: cb22efaf50 user: drh tags: begin-concurrent) | |
19:47 | Merge recent enhancements from trunk. (check-in: f6c9273cab user: drh tags: sessions) | |
13:07 | Make greater use of the SQLITE_WITHIN macro. (check-in: f2fc3aede5 user: drh tags: trunk) | |
2015-12-15
| ||
19:32 | Update the mkautoconfamal.sh script to make the building of the sqlite3-autoconf-VERSION.tar.gz package more orthodox. (check-in: 1928f8945b user: dan tags: trunk) | |
Changes
Changes to src/btree.c.
︙ | ︙ | |||
6466 6467 6468 6469 6470 6471 6472 | i = get2byte(&aData[hdr+5]); memcpy(&pTmp[i], &aData[i], usableSize - i); pData = pEnd; for(i=0; i<nCell; i++){ u8 *pCell = apCell[i]; | | | 6466 6467 6468 6469 6470 6471 6472 6473 6474 6475 6476 6477 6478 6479 6480 | i = get2byte(&aData[hdr+5]); memcpy(&pTmp[i], &aData[i], usableSize - i); pData = pEnd; for(i=0; i<nCell; i++){ u8 *pCell = apCell[i]; if( SQLITE_WITHIN(pCell,aData,pEnd) ){ pCell = &pTmp[pCell - aData]; } pData -= szCell[i]; put2byte(pCellptr, (pData - aData)); pCellptr += 2; if( pData < pCellptr ) return SQLITE_CORRUPT_BKPT; memcpy(pData, pCell, szCell[i]); |
︙ | ︙ | |||
6577 6578 6579 6580 6581 6582 6583 | int i; int iEnd = iFirst + nCell; u8 *pFree = 0; int szFree = 0; for(i=iFirst; i<iEnd; i++){ u8 *pCell = pCArray->apCell[i]; | | | 6577 6578 6579 6580 6581 6582 6583 6584 6585 6586 6587 6588 6589 6590 6591 | int i; int iEnd = iFirst + nCell; u8 *pFree = 0; int szFree = 0; for(i=iFirst; i<iEnd; i++){ u8 *pCell = pCArray->apCell[i]; if( SQLITE_WITHIN(pCell, pStart, pEnd) ){ int sz; /* No need to use cachedCellSize() here. The sizes of all cells that ** are to be freed have already been computing while deciding which ** cells need freeing */ sz = pCArray->szCell[i]; assert( sz>0 ); if( pFree!=(pCell + sz) ){ if( pFree ){ |
︙ | ︙ |
Changes to src/pcache1.c.
︙ | ︙ | |||
346 347 348 349 350 351 352 | /* ** Free an allocated buffer obtained from pcache1Alloc(). */ static void pcache1Free(void *p){ int nFreed = 0; if( p==0 ) return; | | | 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 | /* ** Free an allocated buffer obtained from pcache1Alloc(). */ static void pcache1Free(void *p){ int nFreed = 0; if( p==0 ) return; if( SQLITE_WITHIN(p, pcache1.pStart, pcache1.pEnd) ){ PgFreeslot *pSlot; sqlite3_mutex_enter(pcache1.mutex); sqlite3StatusDown(SQLITE_STATUS_PAGECACHE_USED, 1); pSlot = (PgFreeslot*)p; pSlot->pNext = pcache1.pFree; pcache1.pFree = pSlot; pcache1.nFreeSlot++; |
︙ | ︙ |