diff options
| author | 2014-02-07 15:01:36 +0900 | |
|---|---|---|
| committer | 2015-10-19 14:22:45 +0900 | |
| commit | f783c02c61850cad5ecac59261d70ff967c9b898 (patch) | |
| tree | 41b6da3a6b68e15f4815783b08d3dadeceddf037 | |
| parent | 75693994f60bdec9a10db98ddb8addd2bc3f8bbb (diff) | |
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
| -rw-r--r-- | core/java/android/content/ContentResolver.java | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/core/java/android/content/ContentResolver.java b/core/java/android/content/ContentResolver.java index 6ede29b9ba15..b378d8ee8201 100644 --- a/core/java/android/content/ContentResolver.java +++ b/core/java/android/content/ContentResolver.java @@ -984,6 +984,7 @@ public abstract class ContentResolver { stableProvider = acquireProvider(uri); } releaseUnstableProvider(unstableProvider); + unstableProvider = null; ParcelFileDescriptor pfd = new ParcelFileDescriptorInner( fd.getParcelFileDescriptor(), stableProvider); @@ -1128,6 +1129,7 @@ public abstract class ContentResolver { stableProvider = acquireProvider(uri); } releaseUnstableProvider(unstableProvider); + unstableProvider = null; ParcelFileDescriptor pfd = new ParcelFileDescriptorInner( fd.getParcelFileDescriptor(), stableProvider); |