summaryrefslogtreecommitdiffstats
path: root/chrome/browser/browser_theme_pack.cc
diff options
context:
space:
mode:
authorerg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-05 20:52:56 +0000
committererg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-05 20:52:56 +0000
commitf94614d873ea7983b042dd37448c1b2e3aa82712 (patch)
tree535393177f93bbbf112912d6ff709049f67bb027 /chrome/browser/browser_theme_pack.cc
parentc8b167495aecf707875451ee9fb31331057f3bb8 (diff)
downloadchromium_src-f94614d873ea7983b042dd37448c1b2e3aa82712.zip
chromium_src-f94614d873ea7983b042dd37448c1b2e3aa82712.tar.gz
chromium_src-f94614d873ea7983b042dd37448c1b2e3aa82712.tar.bz2
Don't crash when a theme specifies a non-existant image.
Fixes the current TopCrasher. BUG=31719 TEST=BrowserThemePackTest.TestNonExistantImages Review URL: http://codereview.chromium.org/572039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38242 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/browser_theme_pack.cc')
-rw-r--r--chrome/browser/browser_theme_pack.cc12
1 files changed, 10 insertions, 2 deletions
diff --git a/chrome/browser/browser_theme_pack.cc b/chrome/browser/browser_theme_pack.cc
index 2446754..ea1474c 100644
--- a/chrome/browser/browser_theme_pack.cc
+++ b/chrome/browser/browser_theme_pack.cc
@@ -369,7 +369,8 @@ BrowserThemePack* BrowserThemePack::BuildFromExtension(Extension* extension) {
&file_paths);
pack->BuildSourceImagesArray(file_paths);
- pack->LoadRawBitmapsTo(file_paths, &pack->prepared_images_);
+ if (!pack->LoadRawBitmapsTo(file_paths, &pack->prepared_images_))
+ return NULL;
pack->GenerateFrameImages(&pack->prepared_images_);
@@ -877,12 +878,17 @@ void BrowserThemePack::BuildSourceImagesArray(const FilePathMap& file_paths) {
source_images_[ids.size()] = -1;
}
-void BrowserThemePack::LoadRawBitmapsTo(
+bool BrowserThemePack::LoadRawBitmapsTo(
const FilePathMap& file_paths,
ImageCache* raw_bitmaps) {
for (FilePathMap::const_iterator it = file_paths.begin();
it != file_paths.end(); ++it) {
scoped_refptr<RefCountedMemory> raw_data(ReadFileData(it->second));
+ if (!raw_data.get()) {
+ LOG(ERROR) << "Could not load theme image";
+ return false;
+ }
+
int id = it->first;
// Some images need to go directly into |image_memory_|. No modification is
@@ -908,6 +914,8 @@ void BrowserThemePack::LoadRawBitmapsTo(
}
}
}
+
+ return true;
}
void BrowserThemePack::GenerateFrameImages(ImageCache* bitmaps) const {