diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-05 20:52:56 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-05 20:52:56 +0000 |
commit | f94614d873ea7983b042dd37448c1b2e3aa82712 (patch) | |
tree | 535393177f93bbbf112912d6ff709049f67bb027 /chrome/browser/browser_theme_pack.cc | |
parent | c8b167495aecf707875451ee9fb31331057f3bb8 (diff) | |
download | chromium_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.cc | 12 |
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 { |