Index: chrome/renderer/spellchecker/spellcheck.cc |
=================================================================== |
--- chrome/renderer/spellchecker/spellcheck.cc (revision 34757) |
+++ chrome/renderer/spellchecker/spellcheck.cc (working copy) |
@@ -182,6 +182,8 @@ |
DHISTOGRAM_TIMES("Spellcheck.InitTime", |
TimeTicks::Now() - start_time); |
+ } else { |
+ NOTREACHED() << "Could not mmap spellchecker dictionary."; |
} |
} |
@@ -201,11 +203,9 @@ |
return true; |
} |
- // Check if the platform spellchecker is being used. |
- if (file_ != base::kInvalidPlatformFileValue) { |
- // If it isn't, init hunspell. |
+ // Don't initialize if hunspell is disabled. |
+ if (file_ != base::kInvalidPlatformFileValue) |
InitializeHunspell(); |
- } |
return false; |
} |
@@ -223,9 +223,15 @@ |
std::string word_to_check_utf8(UTF16ToUTF8(word_to_check)); |
// Hunspell shouldn't let us exceed its max, but check just in case |
if (word_to_check_utf8.length() < MAXWORDUTF8LEN) { |
- // |hunspell_->spell| returns 0 if the word is spelled correctly and |
- // non-zero otherwsie. |
- word_correct = (hunspell_->spell(word_to_check_utf8.c_str()) != 0); |
+ if (hunspell_.get()) { |
+ // |hunspell_->spell| returns 0 if the word is spelled correctly and |
+ // non-zero otherwsie. |
+ word_correct = (hunspell_->spell(word_to_check_utf8.c_str()) != 0); |
+ } else { |
+ // If |hunspell_| is NULL here, an error has occurred, but it's better |
+ // to check rather than crash. |
+ word_correct = true; |
+ } |
} |
} |
@@ -241,6 +247,12 @@ |
wrong_word, optional_suggestions)); |
return; |
} |
+ |
+ // If |hunspell_| is NULL here, an error has occurred, but it's better |
+ // to check rather than crash. |
+ if (!hunspell_.get()) |
+ return; |
+ |
char** suggestions; |
int number_of_suggestions = |
hunspell_->suggest(&suggestions, UTF16ToUTF8(wrong_word).c_str()); |