diff options
author | 2013-08-23 17:10:57 +0900 | |
---|---|---|
committer | 2013-08-26 18:08:21 +0900 | |
commit | d5a3c593dba3475f5e72b1fbe53cee5ed17a7529 (patch) | |
tree | 6f230796042889b302da1549a7de68d5aebb3754 /java/src | |
parent | b2f586b9d66fb653d233051c08a22f42b06374e0 (diff) | |
download | latinime-d5a3c593dba3475f5e72b1fbe53cee5ed17a7529.tar.gz latinime-d5a3c593dba3475f5e72b1fbe53cee5ed17a7529.tar.xz latinime-d5a3c593dba3475f5e72b1fbe53cee5ed17a7529.zip |
Remove a broken dictionary file when fail to read a dictionary file.
Bug: 10434720
Change-Id: Ibdf05a39113538546b8fcf9d59af7dddf7ca27fc
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java | 3 | ||||
-rw-r--r-- | java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java | 19 |
2 files changed, 19 insertions, 3 deletions
diff --git a/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java b/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java index 29f114662..ceb8fa81f 100644 --- a/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java +++ b/java/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderUtils.java @@ -561,8 +561,7 @@ public final class BinaryDictDecoderUtils { */ @UsedForTesting /* package */ static FusionDictionary readDictionaryBinary(final Ver3DictDecoder dictDecoder, - final FusionDictionary dict) throws FileNotFoundException, IOException, - UnsupportedFormatException { + final FusionDictionary dict) throws IOException, UnsupportedFormatException { // Read header final FileHeader fileHeader = dictDecoder.readHeader(); diff --git a/java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java b/java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java index 1fff9b49e..1a5023ef6 100644 --- a/java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java +++ b/java/src/com/android/inputmethod/latin/makedict/Ver3DictDecoder.java @@ -25,6 +25,8 @@ import com.android.inputmethod.latin.makedict.FusionDictionary.PtNode; import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString; import com.android.inputmethod.latin.utils.JniUtils; +import android.util.Log; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -38,6 +40,7 @@ import java.util.TreeMap; */ @UsedForTesting public class Ver3DictDecoder implements DictDecoder { + private static final String TAG = Ver3DictDecoder.class.getSimpleName(); static { JniUtils.loadNativeLibrary(); @@ -308,7 +311,21 @@ public class Ver3DictDecoder implements DictDecoder { if (mDictBuffer == null) { openDictBuffer(); } - return BinaryDictDecoderUtils.readDictionaryBinary(this, dict); + try { + return BinaryDictDecoderUtils.readDictionaryBinary(this, dict); + } catch (IOException e) { + Log.e(TAG, "The dictionary " + mDictionaryBinaryFile.getName() + " is broken.", e); + if (!mDictionaryBinaryFile.delete()) { + Log.e(TAG, "Failed to delete the broken dictionary."); + } + throw e; + } catch (UnsupportedFormatException e) { + Log.e(TAG, "The dictionary " + mDictionaryBinaryFile.getName() + " is broken.", e); + if (!mDictionaryBinaryFile.delete()) { + Log.e(TAG, "Failed to delete the broken dictionary."); + } + throw e; + } } @Override |