Index: third_party/sqlite/src/ext/fts2/fts2_icu.c |
diff --git a/third_party/sqlite/src/ext/fts2/fts2_icu.c b/third_party/sqlite/src/ext/fts2/fts2_icu.c |
index a8b835962f91d3610ed82d37062c427693e03b84..6b6b1958ad7af55cb6fa0f8847b4e76ed7321cbb 100644 |
--- a/third_party/sqlite/src/ext/fts2/fts2_icu.c |
+++ b/third_party/sqlite/src/ext/fts2/fts2_icu.c |
@@ -118,15 +118,15 @@ static int icuOpen( |
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); |