Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(606)

Unified Diff: ui/gfx/image/image_skia.cc

Issue 10828296: Avoid crashing when an ImageSkia has no representations and is converted to SkBitmap. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add test Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/gfx/image/image_skia.cc
diff --git a/ui/gfx/image/image_skia.cc b/ui/gfx/image/image_skia.cc
index e8b773041f802046879f662cc590fe172b387e71..d5e91c82a6dcc9c8f3aebb616a8374c4108d31c6 100644
--- a/ui/gfx/image/image_skia.cc
+++ b/ui/gfx/image/image_skia.cc
@@ -165,13 +165,6 @@ ImageSkia& ImageSkia::operator=(const SkBitmap& other) {
return *this;
}
-ImageSkia::operator SkBitmap&() const {
- if (isNull())
- return const_cast<SkBitmap&>(NullImageRep().sk_bitmap());
-
- return const_cast<SkBitmap&>(storage_->image_reps()[0].sk_bitmap());
-}
-
ImageSkia::~ImageSkia() {
}
@@ -279,16 +272,18 @@ std::vector<ImageSkiaRep> ImageSkia::image_reps() const {
return image_reps;
}
-const SkBitmap* ImageSkia::bitmap() const {
+ImageSkia::operator SkBitmap&() const {
if (isNull()) {
// Callers expect a ImageSkiaRep even if it is |isNull()|.
// TODO(pkotwicz): Fix this.
- return &NullImageRep().sk_bitmap();
+ return NullImageRep().mutable_sk_bitmap();
}
ImageSkiaReps::iterator it =
storage_->FindRepresentation(ui::SCALE_FACTOR_100P, true);
- return &it->sk_bitmap();
+ if (it != storage_->image_reps().end())
+ return it->mutable_sk_bitmap();
+ return NullImageRep().mutable_sk_bitmap();
}
void ImageSkia::Init(const ImageSkiaRep& image_rep) {

Powered by Google App Engine
This is Rietveld 408576698