| Index: third_party/sqlite/src/ext/fts3/fts3_porter.c
|
| diff --git a/third_party/sqlite/src/ext/fts3/fts3_porter.c b/third_party/sqlite/src/ext/fts3/fts3_porter.c
|
| index 001060c43b32d5bb92f1800e7de14861e0bce817..27f9cf39d7535e4272017df2613f9aba4461f215 100644
|
| --- a/third_party/sqlite/src/ext/fts3/fts3_porter.c
|
| +++ b/third_party/sqlite/src/ext/fts3/fts3_porter.c
|
| @@ -24,6 +24,7 @@
|
| */
|
| #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3)
|
|
|
| +#include "fts3Int.h"
|
|
|
| #include <assert.h>
|
| #include <stdlib.h>
|
| @@ -53,10 +54,6 @@ typedef struct porter_tokenizer_cursor {
|
| } porter_tokenizer_cursor;
|
|
|
|
|
| -/* Forward declaration */
|
| -static const sqlite3_tokenizer_module porterTokenizerModule;
|
| -
|
| -
|
| /*
|
| ** Create a new tokenizer instance.
|
| */
|
| @@ -65,6 +62,10 @@ static int porterCreate(
|
| sqlite3_tokenizer **ppTokenizer
|
| ){
|
| porter_tokenizer *t;
|
| +
|
| + UNUSED_PARAMETER(argc);
|
| + UNUSED_PARAMETER(argv);
|
| +
|
| t = (porter_tokenizer *) sqlite3_malloc(sizeof(*t));
|
| if( t==NULL ) return SQLITE_NOMEM;
|
| memset(t, 0, sizeof(*t));
|
| @@ -93,6 +94,8 @@ static int porterOpen(
|
| ){
|
| porter_tokenizer_cursor *c;
|
|
|
| + UNUSED_PARAMETER(pTokenizer);
|
| +
|
| c = (porter_tokenizer_cursor *) sqlite3_malloc(sizeof(*c));
|
| if( c==NULL ) return SQLITE_NOMEM;
|
|
|
| @@ -233,7 +236,7 @@ static int hasVowel(const char *z){
|
| ** the first two characters of z[].
|
| */
|
| static int doubleConsonant(const char *z){
|
| - return isConsonant(z) && z[0]==z[1] && isConsonant(z+1);
|
| + return isConsonant(z) && z[0]==z[1];
|
| }
|
|
|
| /*
|
| @@ -246,10 +249,10 @@ static int doubleConsonant(const char *z){
|
| */
|
| static int star_oh(const char *z){
|
| return
|
| - z[0]!=0 && isConsonant(z) &&
|
| + isConsonant(z) &&
|
| z[0]!='w' && z[0]!='x' && z[0]!='y' &&
|
| - z[1]!=0 && isVowel(z+1) &&
|
| - z[2]!=0 && isConsonant(z+2);
|
| + isVowel(z+1) &&
|
| + isConsonant(z+2);
|
| }
|
|
|
| /*
|
| @@ -293,7 +296,7 @@ static void copy_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){
|
| int i, mx, j;
|
| int hasDigit = 0;
|
| for(i=0; i<nIn; i++){
|
| - int c = zIn[i];
|
| + char c = zIn[i];
|
| if( c>='A' && c<='Z' ){
|
| zOut[i] = c - 'A' + 'a';
|
| }else{
|
| @@ -337,17 +340,17 @@ static void copy_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){
|
| ** no chance of overflowing the zOut buffer.
|
| */
|
| static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){
|
| - int i, j, c;
|
| + int i, j;
|
| char zReverse[28];
|
| char *z, *z2;
|
| - if( nIn<3 || nIn>=sizeof(zReverse)-7 ){
|
| + if( nIn<3 || nIn>=(int)sizeof(zReverse)-7 ){
|
| /* The word is too big or too small for the porter stemmer.
|
| ** Fallback to the copy stemmer */
|
| copy_stemmer(zIn, nIn, zOut, pnOut);
|
| return;
|
| }
|
| for(i=0, j=sizeof(zReverse)-6; i<nIn; i++, j--){
|
| - c = zIn[i];
|
| + char c = zIn[i];
|
| if( c>='A' && c<='Z' ){
|
| zReverse[j] = c + 'a' - 'A';
|
| }else if( c>='a' && c<='z' ){
|
| @@ -546,7 +549,7 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){
|
| /* z[] is now the stemmed word in reverse order. Flip it back
|
| ** around into forward order and return.
|
| */
|
| - *pnOut = i = strlen(z);
|
| + *pnOut = i = (int)strlen(z);
|
| zOut[i] = 0;
|
| while( *z ){
|
| zOut[--i] = *(z++);
|
| @@ -601,9 +604,11 @@ static int porterNext(
|
| if( c->iOffset>iStartOffset ){
|
| int n = c->iOffset-iStartOffset;
|
| if( n>c->nAllocated ){
|
| + char *pNew;
|
| c->nAllocated = n+20;
|
| - c->zToken = sqlite3_realloc(c->zToken, c->nAllocated);
|
| - if( c->zToken==NULL ) return SQLITE_NOMEM;
|
| + pNew = sqlite3_realloc(c->zToken, c->nAllocated);
|
| + if( !pNew ) return SQLITE_NOMEM;
|
| + c->zToken = pNew;
|
| }
|
| porter_stemmer(&z[iStartOffset], n, c->zToken, pnBytes);
|
| *pzToken = c->zToken;
|
|
|