diff options
author | 2014-02-21 15:09:37 +0900 | |
---|---|---|
committer | 2014-02-21 15:09:37 +0900 | |
commit | d934fb43ada7876cc3a7986bbdccaa00bbbec302 (patch) | |
tree | 6b322568986f926eec856e6d5438cee45423afd5 /java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java | |
parent | be81b75decd188bd12ef3945c4aacb5dd9fff72f (diff) | |
download | latinime-d934fb43ada7876cc3a7986bbdccaa00bbbec302.tar.gz latinime-d934fb43ada7876cc3a7986bbdccaa00bbbec302.tar.xz latinime-d934fb43ada7876cc3a7986bbdccaa00bbbec302.zip |
Remove corrupted ver4 dictionaries.
Bug: 12916055
Change-Id: I2c390ab1dc483915691b47a605772cbc2dfeaf09
Diffstat (limited to 'java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java index 230739d6f..f9ab9419b 100644 --- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java +++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java @@ -276,22 +276,26 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { return attributeMap; } + private void removeBinaryDictionaryLocked() { + if (mBinaryDictionary != null) { + mBinaryDictionary.close(); + } + if (mDictFile.exists() && !FileUtils.deleteRecursively(mDictFile)) { + Log.e(TAG, "Can't remove a file: " + mDictFile.getName()); + } + mBinaryDictionary = null; + } + protected void clear() { - final File dictFile = mDictFile; getExecutor(mDictName).execute(new Runnable() { @Override public void run() { if (mDictionaryWriter == null) { - if (mBinaryDictionary != null) { - mBinaryDictionary.close(); - } - if (dictFile.exists() && !FileUtils.deleteRecursively(dictFile)) { - Log.e(TAG, "Can't remove a file: " + dictFile.getName()); - } - BinaryDictionary.createEmptyDictFile(dictFile.getAbsolutePath(), + removeBinaryDictionaryLocked(); + BinaryDictionary.createEmptyDictFile(mDictFile.getAbsolutePath(), DICTIONARY_FORMAT_VERSION, mLocale, getHeaderAttributeMap()); mBinaryDictionary = new BinaryDictionary( - dictFile.getAbsolutePath(), 0 /* offset */, dictFile.length(), + mDictFile.getAbsolutePath(), 0 /* offset */, mDictFile.length(), true /* useFullEditDistance */, mLocale, mDictType, mIsUpdatable); } else { mDictionaryWriter.clear(); @@ -469,6 +473,9 @@ abstract public class ExpandableBinaryDictionary extends Dictionary { proximityInfo, blockOffensiveWords, additionalFeaturesOptions, sessionId); holder.set(binarySuggestion); + if (mBinaryDictionary.isCorrupted()) { + removeBinaryDictionaryLocked(); + } } }); return holder.get(null, TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS); |