38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
From 032f34b06b09b35542a7dd6242e2032cbed59b6e Mon Sep 17 00:00:00 2001
|
|
From: Dan Kennedy <danielk1977@gmail.com>
|
|
Date: Mon, 11 Feb 2019 16:12:09 +0000
|
|
Subject: [PATCH 0939/1009] Fix another segfault that could occur in fts5 with
|
|
a corrupted database.
|
|
|
|
https://github.com/mackyle/sqlite/commit/032f34b06b09b35542a7dd6242e2032cbed59b6e
|
|
|
|
---
|
|
ext/fts5/fts5_index.c | 7 +-
|
|
1 files changed, 4 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c
|
|
index 5ce75bd..741e579 100644
|
|
--- a/ext/fts5/fts5_index.c
|
|
+++ b/ext/fts5/fts5_index.c
|
|
@@ -4169,13 +4169,14 @@ static void fts5TrimSegments(Fts5Index *p, Fts5Iter *pIter){
|
|
/* Set up the new page-index array */
|
|
fts5BufferAppendVarint(&p->rc, &buf, 4);
|
|
if( pSeg->iLeafPgno==pSeg->iTermLeafPgno
|
|
- && pSeg->iEndofDoclist<pData->szLeaf
|
|
- ){
|
|
+ && pSeg->iEndofDoclist<pData->szLeaf
|
|
+ && pSeg->iPgidxOff<=pData->nn
|
|
+ ){
|
|
int nDiff = pData->szLeaf - pSeg->iEndofDoclist;
|
|
fts5BufferAppendVarint(&p->rc, &buf, buf.n - 1 - nDiff - 4);
|
|
fts5BufferAppendBlob(&p->rc, &buf,
|
|
pData->nn - pSeg->iPgidxOff, &pData->p[pSeg->iPgidxOff]
|
|
- );
|
|
+ );
|
|
}
|
|
|
|
pSeg->pSeg->pgnoFirst = pSeg->iTermLeafPgno;
|
|
--
|
|
1.8.3.1
|
|
|