summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authormad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-30 19:51:08 +0000
committermad@chromium.org <mad@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-30 19:51:08 +0000
commitb48532fded2bbd1d9b1781c3ba6f645fc54a3070 (patch)
tree835cf8c6aa56b16d540425e3e2103773c91e85a9 /chrome/browser
parent170cd3560aba198b81e2b3e8a1bb463604773a0d (diff)
downloadchromium_src-b48532fded2bbd1d9b1781c3ba6f645fc54a3070.zip
chromium_src-b48532fded2bbd1d9b1781c3ba6f645fc54a3070.tar.gz
chromium_src-b48532fded2bbd1d9b1781c3ba6f645fc54a3070.tar.bz2
Fix a crash and a few leaks.
Crash found here: http://crash/reportview?product=Chrome&signature=7b753528_d761e26e_2b75b018_5089aea9_00f7593e&num=50 BUG=87950 TEST=Make sure we properly see the Shield Icon on text buttons when appropriate. Review URL: http://codereview.chromium.org/7281026 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91181 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/ui/views/infobars/infobar_view.cc14
1 files changed, 10 insertions, 4 deletions
diff --git a/chrome/browser/ui/views/infobars/infobar_view.cc b/chrome/browser/ui/views/infobars/infobar_view.cc
index 57050252..15cfbda 100644
--- a/chrome/browser/ui/views/infobars/infobar_view.cc
+++ b/chrome/browser/ui/views/infobars/infobar_view.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/views/infobars/infobar_view.h"
#include "base/utf_string_conversions.h"
+#include "base/scoped_ptr.h"
#include "chrome/browser/tab_contents/infobar_delegate.h"
#include "chrome/browser/ui/views/infobars/infobar_background.h"
#include "chrome/browser/ui/views/infobars/infobar_button_border.h"
@@ -132,10 +133,15 @@ views::TextButton* InfoBarView::CreateTextButton(
SHSTOCKICONINFO*);
GetStockIconInfo func = reinterpret_cast<GetStockIconInfo>(
GetProcAddress(GetModuleHandle(L"shell32.dll"), "SHGetStockIconInfo"));
- (*func)(SIID_SHIELD, SHGSI_ICON | SHGSI_SMALLICON, &icon_info);
- text_button->SetIcon(*IconUtil::CreateSkBitmapFromHICON(icon_info.hIcon,
- gfx::Size(GetSystemMetrics(SM_CXSMICON),
- GetSystemMetrics(SM_CYSMICON))));
+ if (SUCCEEDED((*func)(SIID_SHIELD, SHGSI_ICON | SHGSI_SMALLICON,
+ &icon_info))) {
+ scoped_ptr<SkBitmap> icon(IconUtil::CreateSkBitmapFromHICON(
+ icon_info.hIcon, gfx::Size(GetSystemMetrics(SM_CXSMICON),
+ GetSystemMetrics(SM_CYSMICON))));
+ if (icon.get())
+ text_button->SetIcon(*icon);
+ DestroyIcon(icon_info.hIcon);
+ }
}
#endif
return text_button;