aboutsummaryrefslogtreecommitdiff
path: root/ext/fts1/fulltext.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/fts1/fulltext.c')
-rw-r--r--ext/fts1/fulltext.c23
1 files changed, 8 insertions, 15 deletions
diff --git a/ext/fts1/fulltext.c b/ext/fts1/fulltext.c
index b7844cbf2..b595a190f 100644
--- a/ext/fts1/fulltext.c
+++ b/ext/fts1/fulltext.c
@@ -294,14 +294,13 @@ static int docListUpdate(DocList *d, sqlite_int64 iDocid, DocList *pUpdate){
DocListReader reader;
char *p;
- assert( d->iType==pUpdate->iType);
if( pUpdate!=NULL ){
+ assert( d->iType==pUpdate->iType);
assert( iDocid==firstDocid(pUpdate) );
}
readerInit(&reader, d);
- while( !readerAtEnd(&reader) ){
- if( peekDocid(&reader) >= iDocid ) break;
+ while( !readerAtEnd(&reader) && peekDocid(&reader)<iDocid ){
skipDocument(&reader);
}
@@ -316,19 +315,15 @@ static int docListUpdate(DocList *d, sqlite_int64 iDocid, DocList *pUpdate){
/* Insert if indicated. */
if( pUpdate!=NULL ){
- int iDoclist;
- int nNeed;
+ int iDoclist = p-d->pData;
docListAddEndPos(pUpdate);
- nNeed = pUpdate->nData;
- iDoclist = p - d->pData;
- d->pData = realloc(d->pData, d->nData+nNeed);
+ d->pData = realloc(d->pData, d->nData+pUpdate->nData);
p = d->pData + iDoclist;
- memmove(p+nNeed, p, docListEnd(d) - p);
- memcpy(p, pUpdate->pData, nNeed);
- p += nNeed;
- d->nData += nNeed;
+ memmove(p+pUpdate->nData, p, docListEnd(d) - p);
+ memcpy(p, pUpdate->pData, pUpdate->nData);
+ d->nData += pUpdate->nData;
modified = 1;
}
@@ -413,7 +408,7 @@ static void mergePosList(DocListMerge *m, sqlite_int64 iDocid,
}
block_pos = readPosition(pBlockReader);
in_pos = readPosition(&m->in);
- } else if( in_pos==-1 || block_pos!=-1 && block_pos-m->iOffset<in_pos ){
+ } else if( in_pos==-1 || (block_pos!=-1 && block_pos-m->iOffset<in_pos) ){
block_pos = readPosition(pBlockReader);
} else {
in_pos = readPosition(&m->in);
@@ -1338,8 +1333,6 @@ static int index_insert_term(fulltext_vtab *v, const char *zTerm, int nTerm,
sqlite_int64 iFirst;
sqlite_int64 iIndexRow;
DocList doclist;
- char *pBlob = NULL;
- int nBlob = 0;
int rc = term_chunk_select(v, zTerm, nTerm, iDocid, &iFirst);
if( rc==SQLITE_DONE ){