Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8214a8c2 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Fix possible NPE.

Bug: 11933670
Change-Id: Ib0ce853e691bdadffb73874ea9f188cfbec8bc93
parent 3f8c6b8c
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -643,6 +643,10 @@ public final class BinaryDictDecoderUtils {
     * @return true if it's a binary dictionary, false otherwise
     */
    public static boolean isBinaryDictionary(final File file) {
        return FormatSpec.getDictDecoder(file).hasValidRawBinaryDictionary();
        final DictDecoder dictDecoder = FormatSpec.getDictDecoder(file);
        if (dictDecoder == null) {
            return false;
        }
        return dictDecoder.hasValidRawBinaryDictionary();
    }
}
+4 −0
Original line number Diff line number Diff line
@@ -309,6 +309,7 @@ public final class BinaryDictIOUtils {
     * @param file The file to read.
     * @param offset The offset in the file where to start reading the data.
     * @param length The length of the data file.
     * @return the header of the specified dictionary file.
     */
    private static FileHeader getDictionaryFileHeader(
            final File file, final long offset, final long length)
@@ -330,6 +331,9 @@ public final class BinaryDictIOUtils {
                    }
                }
        );
        if (dictDecoder == null) {
            return null;
        }
        return dictDecoder.readHeader();
    }

+10 −1
Original line number Diff line number Diff line
@@ -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);
                }
            }