diff options
Diffstat (limited to 'icu4j/main')
-rw-r--r-- | icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java index bd4e8de89..69f61fa4b 100644 --- a/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java +++ b/icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java @@ -221,11 +221,15 @@ public final class ICUBinary { abstract void addBaseNamesInFolder(String folder, String suffix, Set<String> names); } + // BEGIN Android-changed: Map file only once during ICUBinary initialization. Attempt to fix + // some apps not seeing metazones.res file. See b/339899412. private static final class SingleDataFile extends DataFile { + private final ByteBuffer bytes; private final File path; SingleDataFile(String item, File path) { super(item); + this.bytes = mapFile(path); this.path = path; } @Override @@ -236,12 +240,13 @@ public final class ICUBinary { @Override ByteBuffer getData(String requestedPath) { if (requestedPath.equals(itemPath)) { - return mapFile(path); + return bytes.duplicate(); } else { return null; } } - + // END Android-changed: Map file only once during ICUBinary initialization. Attempt to fix + // some apps not seeing metazones.res files in b/339899412. @Override void addBaseNamesInFolder(String folder, String suffix, Set<String> names) { if (itemPath.length() > folder.length() + suffix.length() && |