Add tests for fts5. Fix a crash that can occur in fts5 if the database content is corrupted.
FossilOrigin-Name: acaf426449bf6fd3140fd63141750ff69d1119a5
This commit is contained in:
@@ -6014,7 +6014,7 @@ static void fts5DecodeFunction(
|
||||
|
||||
/* Decode any entries that occur before the first term. */
|
||||
if( szLeaf<n ){
|
||||
fts5FastGetVarint32(a, iPgidxOff, iTermOff);
|
||||
iPgidxOff += fts5GetVarint32(&a[iPgidxOff], iTermOff);
|
||||
}else{
|
||||
iTermOff = szLeaf;
|
||||
}
|
||||
@@ -6025,7 +6025,7 @@ static void fts5DecodeFunction(
|
||||
int nAppend;
|
||||
|
||||
/* Read the term data for the next term*/
|
||||
fts5FastGetVarint32(a, iOff, nAppend);
|
||||
iOff += fts5GetVarint32(&a[iOff], nAppend);
|
||||
term.n = nKeep;
|
||||
fts5BufferAppendBlob(&rc, &term, nAppend, &a[iOff]);
|
||||
sqlite3Fts5BufferAppendPrintf(
|
||||
@@ -6036,7 +6036,7 @@ static void fts5DecodeFunction(
|
||||
/* Figure out where the doclist for this term ends */
|
||||
if( iPgidxOff<n ){
|
||||
int nIncr;
|
||||
fts5FastGetVarint32(a, iPgidxOff, nIncr);
|
||||
iPgidxOff += fts5GetVarint32(&a[iPgidxOff], nIncr);
|
||||
iTermOff += nIncr;
|
||||
}else{
|
||||
iTermOff = szLeaf;
|
||||
@@ -6045,7 +6045,7 @@ static void fts5DecodeFunction(
|
||||
fts5DecodeRowidList(&rc, &s, &a[iOff], iTermOff-iOff);
|
||||
iOff = iTermOff;
|
||||
if( iOff<szLeaf ){
|
||||
fts5FastGetVarint32(a, iOff, nKeep);
|
||||
iOff += fts5GetVarint32(&a[iOff], nKeep);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user