X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fengine%2FDictionary.java;h=5b209b037da3095ebc398683331746062b237f92;hp=cb7371442e3bd380cfafe31d32690d02e70546ca;hb=9cab1701d42d237791c816e8593b36abf515973a;hpb=a91ffbda88a480b2ab2dd26957c658b9c37ebc74 diff --git a/src/com/hughes/android/dictionary/engine/Dictionary.java b/src/com/hughes/android/dictionary/engine/Dictionary.java index cb73714..5b209b0 100644 --- a/src/com/hughes/android/dictionary/engine/Dictionary.java +++ b/src/com/hughes/android/dictionary/engine/Dictionary.java @@ -188,6 +188,14 @@ public class Dictionary { return result; } + // get DictionaryInfo for case when Dictionary cannot be opened + private static DictionaryInfo getErrorDictionaryInfo(final File file) { + final DictionaryInfo dictionaryInfo = new DictionaryInfo(); + dictionaryInfo.uncompressedFilename = file.getName(); + dictionaryInfo.uncompressedBytes = file.length(); + return dictionaryInfo; + } + public static DictionaryInfo getDictionaryInfo(final File file) { RandomAccessFile raf = null; try { @@ -199,10 +207,11 @@ public class Dictionary { raf.close(); return dictionaryInfo; } catch (IOException e) { - final DictionaryInfo dictionaryInfo = new DictionaryInfo(); - dictionaryInfo.uncompressedFilename = file.getName(); - dictionaryInfo.uncompressedBytes = file.length(); - return dictionaryInfo; + return getErrorDictionaryInfo(file); + } catch (IllegalArgumentException e) { + // Most likely due to a Buffer.limit beyond size of file, + // do not crash just because of a truncated dictionary file + return getErrorDictionaryInfo(file); } finally { if (raf != null) { try {