Index: third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
diff --git a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
index de85ae0cfac38c1ec639927926eaff9bc04a4254..fa0a989994df1bcca5748e9c2570c18a630631c2 100644 |
--- a/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
+++ b/third_party/WebKit/Source/platform/image-decoders/ImageDecoder.h |
@@ -258,13 +258,15 @@ class PLATFORM_EXPORT ImageDecoder { |
// and returns true. Otherwise returns false. |
virtual bool hotSpot(IntPoint&) const { return false; } |
- virtual void setMemoryAllocator(SkBitmap::Allocator* allocator) { |
+ void setMemoryAllocator(SkBitmap::Allocator* allocator) { |
// FIXME: this doesn't work for images with multiple frames. |
if (m_frameBufferCache.isEmpty()) { |
- m_frameBufferCache.resize(1); |
- m_frameBufferCache[0].setRequiredPreviousFrameIndex( |
- findRequiredPreviousFrame(0, false)); |
+ // Ensure that initializeNewFrame is called, after parsing if |
+ // necessary. |
+ if (!frameCount()) |
+ return; |
} |
+ |
m_frameBufferCache[0].setMemoryAllocator(allocator); |
} |
@@ -313,9 +315,11 @@ class PLATFORM_EXPORT ImageDecoder { |
virtual size_t decodeFrameCount() { return 1; } |
// Called to initialize the frame buffer with the given index, based on the |
- // provided and previous frame's characteristics. Returns true on success. On |
- // failure, this will mark the image as failed. Before calling this method, |
- // the caller must verify that the frame exists. |
+ // provided and previous frame's characteristics. Returns true on success. |
+ // Before calling this method, the caller must verify that the frame exists. |
+ // On failure, the client should call setFailed. This method does not call |
+ // setFailed itself because that might delete the object directly making this |
+ // call. |
bool initFrameBuffer(size_t); |
// Performs any additional setup of the requested frame after it has been |