From c4878c1c1c26c8d4949445ea899d3fcc530c8680 Mon Sep 17 00:00:00 2001 From: lazyboy Date: Tue, 14 Oct 2014 17:06:54 -0700 Subject: [PATCH] If there's no RVH while starting speech request, bail out. SpeechRecognitionDispatcherHost::OnStartRequest() can be called after the tab that originated the request has been closed. This early exit will fix accessing NULL RVH. BUG=417917 Test=See bug description. Review URL: https://codereview.chromium.org/650583002 Cr-Commit-Position: refs/heads/master@{#299590} --- content/browser/speech/speech_recognition_dispatcher_host.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/content/browser/speech/speech_recognition_dispatcher_host.cc b/content/browser/speech/speech_recognition_dispatcher_host.cc index 1942a50c7150..4a90ba6d770b 100644 --- a/content/browser/speech/speech_recognition_dispatcher_host.cc +++ b/content/browser/speech/speech_recognition_dispatcher_host.cc @@ -88,6 +88,12 @@ void SpeechRecognitionDispatcherHost::OnStartRequest( int embedder_render_view_id = MSG_ROUTING_NONE; RenderViewHostImpl* render_view_host = RenderViewHostImpl::FromID(render_process_id_, params.render_view_id); + if (!render_view_host) { + // RVH can be null if the tab was closed while continuous mode speech + // recognition was running. This seems to happen on mac. + LOG(WARNING) << "SRDH::OnStartRequest, RenderViewHost does not exist"; + return; + } WebContentsImpl* web_contents = static_cast( WebContents::FromRenderViewHost(render_view_host)); BrowserPluginGuest* guest = web_contents->GetBrowserPluginGuest(); -- 2.11.4.GIT