diff options
| author | 2020-07-10 20:25:25 +0000 | |
|---|---|---|
| committer | 2020-07-10 20:25:25 +0000 | |
| commit | d2767b1be00f336b98dcbdaa13a571873a3a2afc (patch) | |
| tree | 1e8a46b8318aaa1b3d3da1e88af2c577592a6e77 | |
| parent | 2a69fed365d74d13078a06bf822a69e338535d42 (diff) | |
| parent | 710e07bf631229f21348554090ff613117b1484b (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.java | 22 |
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. |