Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Fix a segfault introduced by (5720) that can follow an IO error. (CVS 5721) |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
05d3462688507b61710cbda27adf61d0 |
User & Date: | danielk1977 2008-09-18 18:17:04.000 |
Context
2008-09-18
| ||
18:18 | Do not run the async tests if the async module is not installed. (CVS 5722) (check-in: 4de71a4e2f user: drh tags: trunk) | |
18:17 | Fix a segfault introduced by (5720) that can follow an IO error. (CVS 5721) (check-in: 05d3462688 user: danielk1977 tags: trunk) | |
17:34 | Avoid parsing the structure of b-tree pages (in sqlite3BtreeInitPage) more than is necessary. (CVS 5720) (check-in: 6b998f3066 user: danielk1977 tags: trunk) | |
Changes
Changes to src/btree.c.
1 2 3 4 5 6 7 8 9 10 11 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | - + | /* ** 2004 April 6 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** ************************************************************************* |
︙ | |||
4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 | 4949 4950 4951 4952 4953 4954 4955 4956 4957 4958 4959 4960 4961 4962 4963 4964 4965 4966 4967 4968 4969 4970 4971 4972 4973 4974 4975 4976 4977 4978 4979 4980 4981 4982 4983 4984 4985 4986 4987 | + + + - - + + - | */ if( ISAUTOVACUUM ){ rc = ptrmapPut(pBt, pgnoNew, PTRMAP_BTREE, pParent->pgno); if( rc==SQLITE_OK ){ rc = ptrmapPutOvfl(pNew, 0); } } /* Release the reference to the new page. */ releasePage(pNew); } /* At this point the pPage->nFree variable is not set correctly with ** respect to the content of the page (because it was set to 0 by ** insertCell). So call sqlite3BtreeInitPage() to make sure it is ** correct. ** ** This has to be done even if an error will be returned. Normally, if ** an error occurs during tree balancing, the contents of MemPage are ** not important, as they will be recalculated when the page is rolled ** back. But here, in balance_quick(), it is possible that pPage has ** not yet been marked dirty or written into the journal file. Therefore ** it will not be rolled back and so it is important to make sure that ** the page data and contents of MemPage are consistent. */ pPage->isInit = 0; sqlite3BtreeInitPage(pPage, pPage->pParent); sqlite3PagerUnref(pPage->pParent->pDbPage); |
︙ |