diff options
author | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-29 18:45:55 +0000 |
---|---|---|
committer | mad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-29 18:45:55 +0000 |
commit | 0c8d28bf3961f295510bc6e00e841928b35783c1 (patch) | |
tree | 7519c206a8169f0d9089f11f61fb2f6247a07110 /chrome/browser/translate/translate_infobar_delegate.cc | |
parent | 0b6006406af742ca7637b928b87fa837c7b2e917 (diff) | |
download | chromium_src-0c8d28bf3961f295510bc6e00e841928b35783c1.zip chromium_src-0c8d28bf3961f295510bc6e00e841928b35783c1.tar.gz chromium_src-0c8d28bf3961f295510bc6e00e841928b35783c1.tar.bz2 |
Fix a crash caused by unknown saved language.
The language index in the dump referred by the crbug is left to -1, meaning that the language passed to TranslateInfoBarDelegate's constructor...
The call stack showed that the call came from an auto translate preference, so my only guess would be that a preference was saved for a language that is not available anymore, so I added code to protect against that.
BUG=93291
TEST=TranslateManagerTest.UnsupportedSavedLanguage
Review URL: http://codereview.chromium.org/7764003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@98661 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/translate/translate_infobar_delegate.cc')
-rw-r--r-- | chrome/browser/translate/translate_infobar_delegate.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/chrome/browser/translate/translate_infobar_delegate.cc b/chrome/browser/translate/translate_infobar_delegate.cc index 2054199..daba227 100644 --- a/chrome/browser/translate/translate_infobar_delegate.cc +++ b/chrome/browser/translate/translate_infobar_delegate.cc @@ -89,6 +89,7 @@ void TranslateInfoBarDelegate::SetOriginalLanguage(size_t language_index) { void TranslateInfoBarDelegate::SetTargetLanguage(size_t language_index) { DCHECK_LT(language_index, GetLanguageCount()); + DCHECK_GE(language_index, 0U); target_language_index_ = language_index; if (infobar_view_) infobar_view_->TargetLanguageChanged(); @@ -348,6 +349,7 @@ TranslateInfoBarDelegate::TranslateInfoBarDelegate( if (language_code == target_language) target_language_index_ = iter - languages_.begin(); } + DCHECK_NE(kNoIndex, target_language_index_); } bool TranslateInfoBarDelegate::ShouldExpire( |