Merge "Fix race in removeDeadProvider. Bug: 5202824"
This commit is contained in:
@@ -4091,7 +4091,7 @@ public final class ActivityThread {
|
|||||||
final void removeDeadProvider(String name, IContentProvider provider) {
|
final void removeDeadProvider(String name, IContentProvider provider) {
|
||||||
synchronized(mProviderMap) {
|
synchronized(mProviderMap) {
|
||||||
ProviderClientRecord pr = mProviderMap.get(name);
|
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);
|
Slog.i(TAG, "Removing dead content provider: " + name);
|
||||||
ProviderClientRecord removed = mProviderMap.remove(name);
|
ProviderClientRecord removed = mProviderMap.remove(name);
|
||||||
if (removed != null) {
|
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,
|
private IContentProvider installProvider(Context context,
|
||||||
IContentProvider provider, ProviderInfo info, boolean noisy) {
|
IContentProvider provider, ProviderInfo info, boolean noisy) {
|
||||||
ContentProvider localProvider = null;
|
ContentProvider localProvider = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user