summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser_accessibility_manager.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/chrome/browser/browser_accessibility_manager.cc b/chrome/browser/browser_accessibility_manager.cc
index f2755c0..51b7654 100644
--- a/chrome/browser/browser_accessibility_manager.cc
+++ b/chrome/browser/browser_accessibility_manager.cc
@@ -103,10 +103,14 @@ bool BrowserAccessibilityManager::RequestAccessibilityInfo(
new ViewMsg_GetAccessibilityInfo(
members->render_widget_host_->routing_id(), in_params, &out_params_);
- // Necessary for the send to keep the UI responsive.
- msg->EnableMessagePumping();
- bool success = members->render_widget_host_->process()->channel()->
- SendWithTimeout(msg, kAccessibilityMessageTimeOut);
+ bool success = false;
+ if (members->render_widget_host_->process() &&
+ members->render_widget_host_->process()->channel()) {
+ // Necessary for the send to keep the UI responsive.
+ msg->EnableMessagePumping();
+ success = members->render_widget_host_->process()->channel()->
+ SendWithTimeout(msg, kAccessibilityMessageTimeOut);
+ }
return success;
}
@@ -157,11 +161,13 @@ void BrowserAccessibilityManager::Observe(NotificationType type,
// Set BrowserAccessibility instance to inactive state.
it->second->set_instance_active(false);
- render_process_host_map_.erase(it);
// Delete entry also from InstanceMap.
InstanceMap::iterator it2 = instance_map_.find(it->second->instance_id());
if (it2 != instance_map_.end())
instance_map_.erase(it2);
+
+ // Only delete the first entry once it is no longer in use.
+ render_process_host_map_.erase(it);
}