summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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;