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

Commit f783c02c authored by Koji Fukui's avatar Koji Fukui Committed by Akira Numata
Browse files

Avoid a double decrease of reference counter for unstable provider

In some APIs unstable provider is released twice.
Unexpected release of unstable provider makes the reference counter
for unstable provider invalid state and it causes application crash.

This change avoids unexpected double decrease of reference counter
for unstable provider by setting null to prevent extra release
in finally block.

Change-Id: Ie2985c316ffcb6a9db7570c46347035c24d226af
parent 75693994
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -984,6 +984,7 @@ public abstract class ContentResolver {
                        stableProvider = acquireProvider(uri);
                        stableProvider = acquireProvider(uri);
                    }
                    }
                    releaseUnstableProvider(unstableProvider);
                    releaseUnstableProvider(unstableProvider);
                    unstableProvider = null;
                    ParcelFileDescriptor pfd = new ParcelFileDescriptorInner(
                    ParcelFileDescriptor pfd = new ParcelFileDescriptorInner(
                            fd.getParcelFileDescriptor(), stableProvider);
                            fd.getParcelFileDescriptor(), stableProvider);


@@ -1128,6 +1129,7 @@ public abstract class ContentResolver {
                stableProvider = acquireProvider(uri);
                stableProvider = acquireProvider(uri);
            }
            }
            releaseUnstableProvider(unstableProvider);
            releaseUnstableProvider(unstableProvider);
            unstableProvider = null;
            ParcelFileDescriptor pfd = new ParcelFileDescriptorInner(
            ParcelFileDescriptor pfd = new ParcelFileDescriptorInner(
                    fd.getParcelFileDescriptor(), stableProvider);
                    fd.getParcelFileDescriptor(), stableProvider);