summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Shuo Qian <shuoq@google.com> 2020-07-10 20:25:25 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2020-07-10 20:25:25 +0000
commitd2767b1be00f336b98dcbdaa13a571873a3a2afc (patch)
tree1e8a46b8318aaa1b3d3da1e88af2c577592a6e77
parent2a69fed365d74d13078a06bf822a69e338535d42 (diff)
parent710e07bf631229f21348554090ff613117b1484b (diff)
Merge "Fix a Sms7BitEncodingTranslator threading issue, since translate() method can easily race when called by multiple threads." into rvc-qpr-dev am: 22b4b7c111 am: 710e07bf63
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12129459 Change-Id: I343485fb7f7afa0b18f8b1a6908a0652251e8a41
-rw-r--r--telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java22
1 files changed, 15 insertions, 7 deletions
diff --git a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
index 3bd8cdd23df3..f8ab87d042eb 100644
--- a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
+++ b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
@@ -65,13 +65,7 @@ public class Sms7BitEncodingTranslator {
return "";
}
- if (!mIs7BitTranslationTableLoaded) {
- mTranslationTableCommon = new SparseIntArray();
- mTranslationTableGSM = new SparseIntArray();
- mTranslationTableCDMA = new SparseIntArray();
- load7BitTranslationTableFromXml();
- mIs7BitTranslationTableLoaded = true;
- }
+ ensure7BitTranslationTableLoaded();
if ((mTranslationTableCommon != null && mTranslationTableCommon.size() > 0) ||
(mTranslationTableGSM != null && mTranslationTableGSM.size() > 0) ||
@@ -115,6 +109,8 @@ public class Sms7BitEncodingTranslator {
*/
int translation = -1;
+ ensure7BitTranslationTableLoaded();
+
if (mTranslationTableCommon != null) {
translation = mTranslationTableCommon.get(c, -1);
}
@@ -155,6 +151,18 @@ public class Sms7BitEncodingTranslator {
}
}
+ private static void ensure7BitTranslationTableLoaded() {
+ synchronized (Sms7BitEncodingTranslator.class) {
+ if (!mIs7BitTranslationTableLoaded) {
+ mTranslationTableCommon = new SparseIntArray();
+ mTranslationTableGSM = new SparseIntArray();
+ mTranslationTableCDMA = new SparseIntArray();
+ load7BitTranslationTableFromXml();
+ mIs7BitTranslationTableLoaded = true;
+ }
+ }
+ }
+
/**
* Load the whole translation table file from the framework resource
* encoded in XML.