| 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 f7f047c8fcc29a4d1b1337dcdebc65b5b1a49d3e..933602a602b54e35477b5a9e2e250dc1cbcb1afe 100644 | 
| --- a/third_party/sqlite/src/ext/fts3/fts3_porter.c | 
| +++ b/third_party/sqlite/src/ext/fts3/fts3_porter.c | 
| @@ -22,9 +22,8 @@ | 
| **     * The FTS3 module is being built into the core of | 
| **       SQLite (in which case SQLITE_ENABLE_FTS3 is defined). | 
| */ | 
| -#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) | 
| - | 
| #include "fts3Int.h" | 
| +#if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) | 
|  | 
| #include <assert.h> | 
| #include <stdlib.h> | 
| @@ -41,7 +40,7 @@ typedef struct porter_tokenizer { | 
| } porter_tokenizer; | 
|  | 
| /* | 
| -** Class derived from sqlit3_tokenizer_cursor | 
| +** Class derived from sqlite3_tokenizer_cursor | 
| */ | 
| typedef struct porter_tokenizer_cursor { | 
| sqlite3_tokenizer_cursor base; | 
| @@ -404,12 +403,14 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ | 
| /* Step 2 */ | 
| switch( z[1] ){ | 
| case 'a': | 
| -     stem(&z, "lanoita", "ate", m_gt_0) || | 
| -     stem(&z, "lanoit", "tion", m_gt_0); | 
| +     if( !stem(&z, "lanoita", "ate", m_gt_0) ){ | 
| +       stem(&z, "lanoit", "tion", m_gt_0); | 
| +     } | 
| break; | 
| case 'c': | 
| -     stem(&z, "icne", "ence", m_gt_0) || | 
| -     stem(&z, "icna", "ance", m_gt_0); | 
| +     if( !stem(&z, "icne", "ence", m_gt_0) ){ | 
| +       stem(&z, "icna", "ance", m_gt_0); | 
| +     } | 
| break; | 
| case 'e': | 
| stem(&z, "rezi", "ize", m_gt_0); | 
| @@ -418,43 +419,54 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ | 
| stem(&z, "igol", "log", m_gt_0); | 
| break; | 
| case 'l': | 
| -     stem(&z, "ilb", "ble", m_gt_0) || | 
| -     stem(&z, "illa", "al", m_gt_0) || | 
| -     stem(&z, "iltne", "ent", m_gt_0) || | 
| -     stem(&z, "ile", "e", m_gt_0) || | 
| -     stem(&z, "ilsuo", "ous", m_gt_0); | 
| +     if( !stem(&z, "ilb", "ble", m_gt_0) | 
| +      && !stem(&z, "illa", "al", m_gt_0) | 
| +      && !stem(&z, "iltne", "ent", m_gt_0) | 
| +      && !stem(&z, "ile", "e", m_gt_0) | 
| +     ){ | 
| +       stem(&z, "ilsuo", "ous", m_gt_0); | 
| +     } | 
| break; | 
| case 'o': | 
| -     stem(&z, "noitazi", "ize", m_gt_0) || | 
| -     stem(&z, "noita", "ate", m_gt_0) || | 
| -     stem(&z, "rota", "ate", m_gt_0); | 
| +     if( !stem(&z, "noitazi", "ize", m_gt_0) | 
| +      && !stem(&z, "noita", "ate", m_gt_0) | 
| +     ){ | 
| +       stem(&z, "rota", "ate", m_gt_0); | 
| +     } | 
| break; | 
| case 's': | 
| -     stem(&z, "msila", "al", m_gt_0) || | 
| -     stem(&z, "ssenevi", "ive", m_gt_0) || | 
| -     stem(&z, "ssenluf", "ful", m_gt_0) || | 
| -     stem(&z, "ssensuo", "ous", m_gt_0); | 
| +     if( !stem(&z, "msila", "al", m_gt_0) | 
| +      && !stem(&z, "ssenevi", "ive", m_gt_0) | 
| +      && !stem(&z, "ssenluf", "ful", m_gt_0) | 
| +     ){ | 
| +       stem(&z, "ssensuo", "ous", m_gt_0); | 
| +     } | 
| break; | 
| case 't': | 
| -     stem(&z, "itila", "al", m_gt_0) || | 
| -     stem(&z, "itivi", "ive", m_gt_0) || | 
| -     stem(&z, "itilib", "ble", m_gt_0); | 
| +     if( !stem(&z, "itila", "al", m_gt_0) | 
| +      && !stem(&z, "itivi", "ive", m_gt_0) | 
| +     ){ | 
| +       stem(&z, "itilib", "ble", m_gt_0); | 
| +     } | 
| break; | 
| } | 
|  | 
| /* Step 3 */ | 
| switch( z[0] ){ | 
| case 'e': | 
| -     stem(&z, "etaci", "ic", m_gt_0) || | 
| -     stem(&z, "evita", "", m_gt_0)   || | 
| -     stem(&z, "ezila", "al", m_gt_0); | 
| +     if( !stem(&z, "etaci", "ic", m_gt_0) | 
| +      && !stem(&z, "evita", "", m_gt_0) | 
| +     ){ | 
| +       stem(&z, "ezila", "al", m_gt_0); | 
| +     } | 
| break; | 
| case 'i': | 
| stem(&z, "itici", "ic", m_gt_0); | 
| break; | 
| case 'l': | 
| -     stem(&z, "laci", "ic", m_gt_0) || | 
| -     stem(&z, "luf", "", m_gt_0); | 
| +     if( !stem(&z, "laci", "ic", m_gt_0) ){ | 
| +       stem(&z, "luf", "", m_gt_0); | 
| +     } | 
| break; | 
| case 's': | 
| stem(&z, "ssen", "", m_gt_0); | 
| @@ -495,9 +507,11 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ | 
| z += 3; | 
| } | 
| }else if( z[2]=='e' ){ | 
| -         stem(&z, "tneme", "", m_gt_1) || | 
| -         stem(&z, "tnem", "", m_gt_1) || | 
| -         stem(&z, "tne", "", m_gt_1); | 
| +         if( !stem(&z, "tneme", "", m_gt_1) | 
| +          && !stem(&z, "tnem", "", m_gt_1) | 
| +         ){ | 
| +           stem(&z, "tne", "", m_gt_1); | 
| +         } | 
| } | 
| } | 
| break; | 
| @@ -516,8 +530,9 @@ static void porter_stemmer(const char *zIn, int nIn, char *zOut, int *pnOut){ | 
| } | 
| break; | 
| case 't': | 
| -     stem(&z, "eta", "", m_gt_1) || | 
| -     stem(&z, "iti", "", m_gt_1); | 
| +     if( !stem(&z, "eta", "", m_gt_1) ){ | 
| +       stem(&z, "iti", "", m_gt_1); | 
| +     } | 
| break; | 
| case 'u': | 
| if( z[0]=='s' && z[2]=='o' && m_gt_1(z+3) ){ | 
| @@ -631,6 +646,7 @@ static const sqlite3_tokenizer_module porterTokenizerModule = { | 
| porterOpen, | 
| porterClose, | 
| porterNext, | 
| +  0 | 
| }; | 
|  | 
| /* | 
|  |