| Index: content/browser/speech/speech_recognition_manager_impl.cc
|
| diff --git a/content/browser/speech/speech_recognition_manager_impl.cc b/content/browser/speech/speech_recognition_manager_impl.cc
|
| index 7a0d5c814104717152dd983d5494f704fc31f756..2da52ef6a9be9bc764ee09696d5bb064bdad93de 100644
|
| --- a/content/browser/speech/speech_recognition_manager_impl.cc
|
| +++ b/content/browser/speech/speech_recognition_manager_impl.cc
|
| @@ -327,6 +327,12 @@ void SpeechRecognitionManagerImpl::AbortAllSessionsForListener(
|
| void SpeechRecognitionManagerImpl::DispatchEvent(int session_id,
|
| FSMEvent event) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
|
| +
|
| + // There are some corner cases in which the session might be deleted (due to
|
| + // an EndRecognition event) between a request (e.g. Abort) and its dispatch.
|
| + if (!SessionExists(session_id))
|
| + return;
|
| +
|
| const Session& session = GetSession(session_id);
|
| FSMState session_state = GetSessionState(session_id);
|
| DCHECK_LE(session_state, SESSION_STATE_MAX_VALUE);
|
|
|