diff options
author | Almaz Mingaleev <mingaleev@google.com> | 2024-06-06 13:24:43 +0100 |
---|---|---|
committer | Almaz Mingaleev <mingaleev@google.com> | 2024-06-06 14:26:18 +0100 |
commit | 32020729f88884896639c8b63fe350f9203bb273 (patch) | |
tree | 7dfdce555fe05f0bcfd019085d7249a215ae7de2 /android_icu4j/src/main/java/android/icu/impl/ICUBinary.java | |
parent | 701b605574940b765ba111d2f933e4cdb1399e62 (diff) | |
download | icu-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.java | 9 |
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() && |