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

Commit 2b609022 authored by Tomasz Wasilczyk's avatar Tomasz Wasilczyk Committed by Android (Google) Code Review
Browse files

Merge "Use CloseGuard to catch UiccPort resource leaks" into main

parents 6f565486 bdb4dd81
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import com.android.internal.telephony.flags.FeatureFlags;
import com.android.internal.telephony.flags.FeatureFlagsImpl;
import com.android.telephony.Rlog;

import dalvik.system.CloseGuard;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -46,6 +48,7 @@ public class UiccPort {
    // The lock object is created by UiccSlot that owns this UiccCard - this is to share the lock
    // between UiccSlot, UiccCard, EuiccCard, UiccPort, EuiccPort and UiccProfile for now.
    protected final Object mLock;
    private final CloseGuard mCloseGuard = CloseGuard.get();

    private String mIccid;
    protected String mCardId;
@@ -68,6 +71,7 @@ public class UiccPort {
        if (DBG) log("Creating");
        mPhoneId = phoneId;
        mLock = lock;
        mCloseGuard.open("cleanup");
        update(c, ci, ics, uiccCard);
    }

@@ -97,6 +101,7 @@ public class UiccPort {
    public void dispose() {
        synchronized (mLock) {
            if (DBG) log("Disposing Port");
            mCloseGuard.close();
            if (mUiccProfile != null) {
                mUiccProfile.dispose();
            }
@@ -106,9 +111,14 @@ public class UiccPort {
    }

    @Override
    protected void finalize() {
    protected void finalize() throws Throwable {
        if (DBG) log("UiccPort finalized");
        try {
            if (mCloseGuard != null) mCloseGuard.warnIfOpen();
            cleanupOpenLogicalChannelRecordsIfNeeded();
        } finally {
            super.finalize();
        }
    }

    /**