Chromium Code Reviews| Index: Source/core/loader/ImageLoader.cpp |
| diff --git a/Source/core/loader/ImageLoader.cpp b/Source/core/loader/ImageLoader.cpp |
| index f3f4e3ff57b6f34241bfc4592b3c115084178811..cfa1fd862f635d721a399669e7488eaf8cd6b5d9 100644 |
| --- a/Source/core/loader/ImageLoader.cpp |
| +++ b/Source/core/loader/ImageLoader.cpp |
| @@ -122,11 +122,11 @@ ImageLoader::~ImageLoader() |
| ASSERT(m_hasPendingErrorEvent || !errorEventSender().hasPendingEvents(this)); |
| if (m_hasPendingErrorEvent) |
| errorEventSender().cancelEvent(this); |
| +} |
| - // If the ImageLoader is being destroyed but it is still protecting its image-loading Element, |
| - // remove that protection here. |
| - if (m_elementIsProtected) |
| - m_element->deref(); |
|
haraken
2014/06/10 04:15:13
Shall we add an ASSERT like this?
ASSERT(!m_ele
|
| +void ImageLoader::trace(Visitor* visitor) |
| +{ |
| + visitor->trace(m_element); |
| } |
| void ImageLoader::setImage(ImageResource* newImage) |
| @@ -416,7 +416,7 @@ void ImageLoader::updatedHasPendingEvent() |
| if (m_derefElementTimer.isActive()) |
| m_derefElementTimer.stop(); |
| else |
| - m_element->ref(); |
| + m_keepAlive = m_element; |
| } else { |
| ASSERT(!m_derefElementTimer.isActive()); |
| m_derefElementTimer.startOneShot(0, FROM_HERE); |
| @@ -425,7 +425,7 @@ void ImageLoader::updatedHasPendingEvent() |
| void ImageLoader::timerFired(Timer<ImageLoader>*) |
| { |
| - m_element->deref(); |
| + m_keepAlive.clear(); |
| } |
| void ImageLoader::dispatchPendingEvent(ImageEventSender* eventSender) |