1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Add more ALWAYS() macros on unreachable branches in rtree.c

FossilOrigin-Name: fbba89dac9591c56da81bd0808910fbc64640f3ccfd95845ecab4d3aea46ca61
This commit is contained in:
drh
2021-09-15 19:13:24 +00:00
parent 8038cb99b0
commit 750f2331c4
3 changed files with 20 additions and 11 deletions

View File

@@ -2239,12 +2239,19 @@ static int AdjustTree(
){
RtreeNode *p = pNode;
int cnt = 0;
int rc;
while( p->pParent ){
RtreeNode *pParent = p->pParent;
RtreeCell cell;
int iCell;
if( (++cnt)>1000 || nodeParentIndex(pRtree, p, &iCell) ){
cnt++;
if( NEVER(cnt>100) ){
RTREE_IS_CORRUPT(pRtree);
return SQLITE_CORRUPT_VTAB;
}
rc = nodeParentIndex(pRtree, p, &iCell);
if( NEVER(rc!=SQLITE_OK) ){
RTREE_IS_CORRUPT(pRtree);
return SQLITE_CORRUPT_VTAB;
}
@@ -2628,11 +2635,12 @@ static int SplitNode(
RtreeNode *pParent = pLeft->pParent;
int iCell;
rc = nodeParentIndex(pRtree, pLeft, &iCell);
if( rc==SQLITE_OK ){
if( ALWAYS(rc==SQLITE_OK) ){
nodeOverwriteCell(pRtree, pParent, &leftbbox, iCell);
rc = AdjustTree(pRtree, pParent, &leftbbox);
assert( rc==SQLITE_OK );
}
if( rc!=SQLITE_OK ){
if( NEVER(rc!=SQLITE_OK) ){
goto splitnode_out;
}
}
@@ -2707,8 +2715,9 @@ static int fixLeafParent(Rtree *pRtree, RtreeNode *pLeaf){
*/
iNode = sqlite3_column_int64(pRtree->pReadParent, 0);
for(pTest=pLeaf; pTest && pTest->iNode!=iNode; pTest=pTest->pParent);
if( !pTest ){
if( ALWAYS(pTest==0) ){
rc2 = nodeAcquire(pRtree, iNode, 0, &pChild->pParent);
assert( rc2==SQLITE_OK );
}
}
rc = sqlite3_reset(pRtree->pReadParent);