diff options
author | mirandac@google.com <mirandac@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-23 23:09:34 +0000 |
---|---|---|
committer | mirandac@google.com <mirandac@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-23 23:09:34 +0000 |
commit | 39d6d36d3db1bfb64e4dccd9da0909c24168538a (patch) | |
tree | 9d842e67b009a24e75cb1c1e97cf56ff5ac6d28e /chrome/browser | |
parent | fd90fabd12cf9b2b1e7f2fa198ecdc69346004a1 (diff) | |
download | chromium_src-39d6d36d3db1bfb64e4dccd9da0909c24168538a.zip chromium_src-39d6d36d3db1bfb64e4dccd9da0909c24168538a.tar.gz chromium_src-39d6d36d3db1bfb64e4dccd9da0909c24168538a.tar.bz2 |
Fix XP crasher in Search Engine Experiment.
This was causing a crash because the View "owns" its images, and was trying to delete the ImageView which had already been deleted in a scoped_ptr. Solution: put the ImageView in a regular pointer instead.
BUG= 42346
TEST=run with search engine experiment enabled in XP, don't crash.
Review URL: http://codereview.chromium.org/1696010
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@45510 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/views/first_run_search_engine_view.cc | 4 | ||||
-rw-r--r-- | chrome/browser/views/first_run_search_engine_view.h | 8 |
2 files changed, 6 insertions, 6 deletions
diff --git a/chrome/browser/views/first_run_search_engine_view.cc b/chrome/browser/views/first_run_search_engine_view.cc index 7c6c95c..1f77092 100644 --- a/chrome/browser/views/first_run_search_engine_view.cc +++ b/chrome/browser/views/first_run_search_engine_view.cc @@ -120,7 +120,7 @@ SearchEngineChoice::SearchEngineChoice(views::ButtonListener* listener, logo_image->SetImageSize(gfx::Size(kSmallLogoWidth, kSmallLogoHeight)); // Tooltip text provides accessibility. logo_image->SetTooltipText(search_engine_->short_name()); - choice_view_.reset(logo_image); + choice_view_ = logo_image; } else { // No logo -- we must show a text label. views::Label* logo_label = new views::Label(search_engine_->short_name()); @@ -128,7 +128,7 @@ SearchEngineChoice::SearchEngineChoice(views::ButtonListener* listener, logo_label->SetFont(logo_label->font().DeriveFont(2, gfx::Font::NORMAL)); logo_label->SetHorizontalAlignment(views::Label::ALIGN_CENTER); logo_label->SetTooltipText(search_engine_->short_name()); - choice_view_.reset(logo_label); + choice_view_ = logo_label; } } diff --git a/chrome/browser/views/first_run_search_engine_view.h b/chrome/browser/views/first_run_search_engine_view.h index aa5a03b..b012e22 100644 --- a/chrome/browser/views/first_run_search_engine_view.h +++ b/chrome/browser/views/first_run_search_engine_view.h @@ -7,7 +7,6 @@ #include <vector> -#include "base/scoped_ptr.h" #include "chrome/browser/views/keyword_editor_view.h" #include "gfx/size.h" #include "views/controls/button/native_button.h" @@ -42,7 +41,7 @@ class SearchEngineChoice : public views::NativeButton { // These methods return data about the logo or text view associated // with this search engine choice. - views::View* GetView() { return choice_view_.get(); } + views::View* GetView() { return choice_view_; } int GetChoiceViewWidth(); int GetChoiceViewHeight(); @@ -54,8 +53,9 @@ class SearchEngineChoice : public views::NativeButton { const TemplateURL* GetSearchEngine() { return search_engine_; } private: - // Either an ImageView of a logo, or a Label with text. - scoped_ptr<views::View> choice_view_; + // Either an ImageView of a logo, or a Label with text. Owned by + // FirstRunSearchEngineView. + views::View* choice_view_; // True if choice_view_ is holding an ImageView. bool is_image_label_; |