| Index: third_party/sqlite/src/ext/fts3/fts3_icu.c | 
| diff --git a/third_party/sqlite/src/ext/fts3/fts3_icu.c b/third_party/sqlite/src/ext/fts3/fts3_icu.c | 
| index e406168d4f39d48cc163f0b5f6353cfe0051435e..52df8c7d8128e3f6e71bc0571653232eac06a9a5 100644 | 
| --- a/third_party/sqlite/src/ext/fts3/fts3_icu.c | 
| +++ b/third_party/sqlite/src/ext/fts3/fts3_icu.c | 
| @@ -10,10 +10,8 @@ | 
| ** | 
| ************************************************************************* | 
| ** This file implements a tokenizer for fts3 based on the ICU library. | 
| -** | 
| -** $Id: fts3_icu.c,v 1.3 2008/09/01 18:34:20 danielk1977 Exp $ | 
| */ | 
| - | 
| +#include "fts3Int.h" | 
| #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) | 
| #ifdef SQLITE_ENABLE_ICU | 
|  | 
| @@ -112,21 +110,24 @@ static int icuOpen( | 
|  | 
| *ppCursor = 0; | 
|  | 
| -  if( nInput<0 ){ | 
| +  if( zInput==0 ){ | 
| +    nInput = 0; | 
| +    zInput = ""; | 
| +  }else if( nInput<0 ){ | 
| nInput = strlen(zInput); | 
| } | 
| nChar = nInput+1; | 
| pCsr = (IcuCursor *)sqlite3_malloc( | 
| sizeof(IcuCursor) +                /* IcuCursor */ | 
| -      (nChar+1) * sizeof(int) +          /* IcuCursor.aOffset[] */ | 
| -      nChar * sizeof(UChar)              /* IcuCursor.aChar[] */ | 
| +      ((nChar+3)&~3) * sizeof(UChar) +   /* IcuCursor.aChar[] */ | 
| +      (nChar+1) * sizeof(int)            /* IcuCursor.aOffset[] */ | 
| ); | 
| if( !pCsr ){ | 
| return SQLITE_NOMEM; | 
| } | 
| memset(pCsr, 0, sizeof(IcuCursor)); | 
| -  pCsr->aOffset = (int *)&pCsr[1]; | 
| -  pCsr->aChar = (UChar *)&pCsr->aOffset[nChar+1]; | 
| +  pCsr->aChar = (UChar *)&pCsr[1]; | 
| +  pCsr->aOffset = (int *)&pCsr->aChar[(nChar+3)&~3]; | 
|  | 
| pCsr->aOffset[iOut] = iInput; | 
| U8_NEXT(zInput, iInput, nInput, c); | 
|  |