Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 710e07bf authored by Shuo Qian's avatar Shuo Qian Committed by Automerger Merge Worker
Browse files

Merge "Fix a Sms7BitEncodingTranslator threading issue, since translate()...

Merge "Fix a Sms7BitEncodingTranslator threading issue, since translate() method can easily race when called by multiple threads." into rvc-qpr-dev am: 22b4b7c1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12129459

Change-Id: Id8effff77be4d89335b433b6bc74adc586d525cf
parents 3cc6fc0d 22b4b7c1
Loading
Loading
Loading
Loading
+15 −7
Original line number Diff line number Diff line
@@ -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.