am d5a3c593: Remove a broken dictionary file when fail to read a dictionary file.

* commit 'd5a3c593dba3475f5e72b1fbe53cee5ed17a7529':
  Remove a broken dictionary file when fail to read a dictionary file.
This commit is contained in:
Yuichiro Hanada 2013-08-26 02:12:19 -07:00 committed by Android Git Automerger
commit bfb4c3aa7f
2 changed files with 19 additions and 3 deletions

View file

@ -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();

View file

@ -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