summaryrefslogtreecommitdiff
path: root/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
diff options
context:
space:
mode:
authorAlmaz Mingaleev <mingaleev@google.com>2024-06-06 13:24:43 +0100
committerAlmaz Mingaleev <mingaleev@google.com>2024-06-06 14:26:18 +0100
commit32020729f88884896639c8b63fe350f9203bb273 (patch)
tree7dfdce555fe05f0bcfd019085d7249a215ae7de2 /android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
parent701b605574940b765ba111d2f933e4cdb1399e62 (diff)
downloadicu-32020729f88884896639c8b63fe350f9203bb273.tar.gz
Android patch: mmap .res files during initialization in ICUBinary.
Bug: 339899412 Test: CtsIcuTestCases Test: zygote process has .res files listed in /proc/pid/smaps Change-Id: I247175fbec848397505dc9616e7b7ad6888abdf1
Diffstat (limited to 'android_icu4j/src/main/java/android/icu/impl/ICUBinary.java')
-rw-r--r--android_icu4j/src/main/java/android/icu/impl/ICUBinary.java9
1 files changed, 7 insertions, 2 deletions
diff --git a/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java b/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
index b1f9a7231..f5f0c6adc 100644
--- a/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
+++ b/android_icu4j/src/main/java/android/icu/impl/ICUBinary.java
@@ -225,11 +225,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
@@ -240,12 +244,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() &&