summaryrefslogtreecommitdiff
path: root/icu4j/main
diff options
context:
space:
mode:
Diffstat (limited to 'icu4j/main')
-rw-r--r--icu4j/main/core/src/main/java/com/ibm/icu/impl/ICUBinary.java9
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() &&