summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Brown <jeffbrown@google.com> 2011-08-23 13:33:49 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2011-08-23 13:33:49 -0700
commitade537a33109cf86a9fd9bd658d9f7fdf6a08002 (patch)
treea4bd9a306c3ed60483f03c61e176e7151588d07f
parentdefa12e95b8d25db5f3e9a044e83d6fe680b67a3 (diff)
parent2a4c5acc27e546f11e578e9982d8c33deb6b88fb (diff)
Merge "Fix race in removeDeadProvider. Bug: 5202824"
-rw-r--r--core/java/android/app/ActivityThread.java13
1 files changed, 1 insertions, 12 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index e3762206588d..6fb79656b683 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -4091,7 +4091,7 @@ public final class ActivityThread {
final void removeDeadProvider(String name, IContentProvider provider) {
synchronized(mProviderMap) {
ProviderClientRecord pr = mProviderMap.get(name);
- if (pr.mProvider.asBinder() == provider.asBinder()) {
+ if (pr != null && pr.mProvider.asBinder() == provider.asBinder()) {
Slog.i(TAG, "Removing dead content provider: " + name);
ProviderClientRecord removed = mProviderMap.remove(name);
if (removed != null) {
@@ -4101,17 +4101,6 @@ public final class ActivityThread {
}
}
- final void removeDeadProviderLocked(String name, IContentProvider provider) {
- ProviderClientRecord pr = mProviderMap.get(name);
- if (pr.mProvider.asBinder() == provider.asBinder()) {
- Slog.i(TAG, "Removing dead content provider: " + name);
- ProviderClientRecord removed = mProviderMap.remove(name);
- if (removed != null) {
- removed.mProvider.asBinder().unlinkToDeath(removed, 0);
- }
- }
- }
-
private IContentProvider installProvider(Context context,
IContentProvider provider, ProviderInfo info, boolean noisy) {
ContentProvider localProvider = null;