Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a possible memory leak when trying to UPDATE a corrupt RTREE index. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
63eb803dbc27077007dbee8def659d15 |
User & Date: | drh 2019-01-08 14:28:02 |
Context
2019-01-08
| ||
15:18 | Performance improvement on the instr() function, especially for large haystacks. (check-in: ce51f1a2 user: drh tags: trunk) | |
14:28 | Fix a possible memory leak when trying to UPDATE a corrupt RTREE index. (check-in: 63eb803d user: drh tags: trunk) | |
08:02 | Fix further problems with fts5 and corrupt databases causing integer overflow. (check-in: 673a7dd6 user: dan tags: trunk) | |
Changes
Changes to ext/rtree/rtree.c.
︙ | ︙ | |||
713 714 715 716 717 718 719 | pNode->nRef = 1; pRtree->nNodeRef++; pNode->iNode = iNode; pNode->isDirty = 0; pNode->pNext = 0; rc = sqlite3_blob_read(pRtree->pNodeBlob, pNode->zData, pRtree->iNodeSize, 0); | < | 713 714 715 716 717 718 719 720 721 722 723 724 725 726 | pNode->nRef = 1; pRtree->nNodeRef++; pNode->iNode = iNode; pNode->isDirty = 0; pNode->pNext = 0; rc = sqlite3_blob_read(pRtree->pNodeBlob, pNode->zData, pRtree->iNodeSize, 0); } } /* If the root node was just loaded, set pRtree->iDepth to the height ** of the r-tree structure. A height of zero means all data is stored on ** the root node. A height of one means the children of the root node ** are the leaves, and so on. If the depth as specified on the root node |
︙ | ︙ | |||
744 745 746 747 748 749 750 751 752 753 754 755 756 757 | rc = SQLITE_CORRUPT_VTAB; RTREE_IS_CORRUPT(pRtree); } } if( rc==SQLITE_OK ){ if( pNode!=0 ){ nodeHashInsert(pRtree, pNode); }else{ rc = SQLITE_CORRUPT_VTAB; RTREE_IS_CORRUPT(pRtree); } *ppNode = pNode; }else{ | > | 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 | rc = SQLITE_CORRUPT_VTAB; RTREE_IS_CORRUPT(pRtree); } } if( rc==SQLITE_OK ){ if( pNode!=0 ){ nodeReference(pParent); nodeHashInsert(pRtree, pNode); }else{ rc = SQLITE_CORRUPT_VTAB; RTREE_IS_CORRUPT(pRtree); } *ppNode = pNode; }else{ |
︙ | ︙ |