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

Commit d400d03f authored by Dianne Hackborn's avatar Dianne Hackborn Committed by Android (Google) Code Review
Browse files

Merge "Fix issue #5595933: GREF leak due to race condition in..." into ics-mr1

parents 847fbbea 5a6ef737
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -901,6 +901,7 @@ public final class LoadedApk {
        private RuntimeException mUnbindLocation;
        private RuntimeException mUnbindLocation;


        private boolean mDied;
        private boolean mDied;
        private boolean mForgotten;


        private static class ConnectionInfo {
        private static class ConnectionInfo {
            IBinder binder;
            IBinder binder;
@@ -959,6 +960,7 @@ public final class LoadedApk {
                    ci.binder.unlinkToDeath(ci.deathMonitor, 0);
                    ci.binder.unlinkToDeath(ci.deathMonitor, 0);
                }
                }
                mActiveConnections.clear();
                mActiveConnections.clear();
                mForgotten = true;
            }
            }
        }
        }


@@ -1020,6 +1022,11 @@ public final class LoadedApk {
            ServiceDispatcher.ConnectionInfo info;
            ServiceDispatcher.ConnectionInfo info;


            synchronized (this) {
            synchronized (this) {
                if (mForgotten) {
                    // We unbound before receiving the connection; ignore
                    // any connection received.
                    return;
                }
                old = mActiveConnections.get(name);
                old = mActiveConnections.get(name);
                if (old != null && old.binder == service) {
                if (old != null && old.binder == service) {
                    // Huh, already have this one.  Oh well!
                    // Huh, already have this one.  Oh well!