Index: chrome/browser/speech/speech_recognizer.cc |
diff --git a/chrome/browser/speech/speech_recognizer.cc b/chrome/browser/speech/speech_recognizer.cc |
index 38bbeca5be7af4e2d5c10ebc7f42df608f0aa023..113600ba9428a8bf1e03dd24cb7bf5cc17c7c6c6 100644 |
--- a/chrome/browser/speech/speech_recognizer.cc |
+++ b/chrome/browser/speech/speech_recognizer.cc |
@@ -129,8 +129,12 @@ void SpeechRecognizer::StopRecording() { |
// Since the http request takes a single string as POST data, allocate |
// one and copy over bytes from the audio buffers to the string. |
// And If we haven't got any audio yet end the recognition sequence here. |
+ string mime_type = encoder_->mime_type(); |
string data; |
- if (!encoder_->GetEncodedData(&data)) { |
+ encoder_->GetEncodedData(&data); |
+ encoder_.reset(); |
+ |
+ if (data.empty()) { |
// Guard against the delegate freeing us until we finish our job. |
scoped_refptr<SpeechRecognizer> me(this); |
delegate_->DidCompleteRecognition(caller_id_); |
@@ -139,9 +143,8 @@ void SpeechRecognizer::StopRecording() { |
request_.reset(new SpeechRecognitionRequest( |
Profile::GetDefaultRequestContext(), this)); |
request_->Send(language_, grammar_, hardware_info_, origin_url_, |
- encoder_->mime_type(), data); |
+ mime_type, data); |
} |
- encoder_.reset(); |
} |
void SpeechRecognizer::ReleaseAudioBuffers() { |