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

Commit 47351ebc 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." am: 02b66464 am: 1609733f

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

Change-Id: Ia8d0608b3ef8291030a8131b732dee2eff2c8745
parents ad12e8d8 1609733f
Loading
Loading
Loading
Loading
+15 −7
Original line number Original line Diff line number Diff line
@@ -65,13 +65,7 @@ public class Sms7BitEncodingTranslator {
            return "";
            return "";
        }
        }


        if (!mIs7BitTranslationTableLoaded) {
        ensure7BitTranslationTableLoaded();
            mTranslationTableCommon = new SparseIntArray();
            mTranslationTableGSM = new SparseIntArray();
            mTranslationTableCDMA = new SparseIntArray();
            load7BitTranslationTableFromXml();
            mIs7BitTranslationTableLoaded = true;
        }


        if ((mTranslationTableCommon != null && mTranslationTableCommon.size() > 0) ||
        if ((mTranslationTableCommon != null && mTranslationTableCommon.size() > 0) ||
                (mTranslationTableGSM != null && mTranslationTableGSM.size() > 0) ||
                (mTranslationTableGSM != null && mTranslationTableGSM.size() > 0) ||
@@ -115,6 +109,8 @@ public class Sms7BitEncodingTranslator {
         */
         */
        int translation = -1;
        int translation = -1;


        ensure7BitTranslationTableLoaded();

        if (mTranslationTableCommon != null) {
        if (mTranslationTableCommon != null) {
            translation = mTranslationTableCommon.get(c, -1);
            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
     * Load the whole translation table file from the framework resource
     * encoded in XML.
     * encoded in XML.