aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
diff options
context:
space:
mode:
authorKeisuke Kuroyanagi <ksk@google.com>2014-01-06 17:56:49 +0900
committerKeisuke Kuroyanagi <ksk@google.com>2014-01-06 17:56:49 +0900
commit8214a8c2cf29ef28ccf515b9df1390299fd4cbdd (patch)
treedb294c73e9cea29adf148292abbb23b9db1839a5 /java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
parent3f8c6b8c54b6a0cf15da10c3c2fcf80c9af27c42 (diff)
downloadlatinime-8214a8c2cf29ef28ccf515b9df1390299fd4cbdd.tar.gz
latinime-8214a8c2cf29ef28ccf515b9df1390299fd4cbdd.tar.xz
latinime-8214a8c2cf29ef28ccf515b9df1390299fd4cbdd.zip
Fix possible NPE.
Bug: 11933670 Change-Id: Ib0ce853e691bdadffb73874ea9f188cfbec8bc93
Diffstat (limited to 'java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java')
-rw-r--r--java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java11
1 files changed, 10 insertions, 1 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java b/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
index 021bf0825..3daa63ff4 100644
--- a/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
+++ b/java/src/com/android/inputmethod/latin/utils/DictionaryInfoUtils.java
@@ -282,10 +282,19 @@ public class DictionaryInfoUtils {
return BinaryDictIOUtils.getDictionaryFileHeaderOrNull(file, 0, file.length());
}
+ /**
+ * Returns information of the dictionary.
+ *
+ * @param fileAddress the asset dictionary file address.
+ * @return information of the specified dictionary.
+ */
private static DictionaryInfo createDictionaryInfoFromFileAddress(
final AssetFileAddress fileAddress) {
final FileHeader header = BinaryDictIOUtils.getDictionaryFileHeaderOrNull(
new File(fileAddress.mFilename), fileAddress.mOffset, fileAddress.mLength);
+ if (header == null) {
+ return null;
+ }
final String id = header.getId();
final Locale locale = LocaleUtils.constructLocaleFromString(header.getLocaleString());
final String description = header.getDescription();
@@ -328,7 +337,7 @@ public class DictionaryInfoUtils {
// Protect against cases of a less-specific dictionary being found, like an
// en dictionary being used for an en_US locale. In this case, the en dictionary
// should be used for en_US but discounted for listing purposes.
- if (!dictionaryInfo.mLocale.equals(locale)) continue;
+ if (dictionaryInfo == null || !dictionaryInfo.mLocale.equals(locale)) continue;
addOrUpdateDictInfo(dictList, dictionaryInfo);
}
}