Index: Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp |
=================================================================== |
--- Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (revision 85543) |
+++ Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp (working copy) |
@@ -84,8 +84,12 @@ |
{ |
ASSERT(client); |
- if (m_filter.contains(client)) |
- delete m_filter.take(client); |
+ if (FilterData* filterData = m_filter.get(client)) { |
+ if (filterData->savedContext) |
+ filterData->markedForRemoval = true; |
+ else |
+ delete m_filter.take(client); |
+ } |
markClientForInvalidation(client, markForInvalidation ? BoundariesInvalidation : ParentOnlyInvalidation); |
} |
@@ -266,10 +270,15 @@ |
UNUSED_PARAM(resourceMode); |
#endif |
- if (!m_filter.contains(object)) |
+ FilterData* filterData = m_filter.get(object); |
+ if (!filterData) |
return; |
- FilterData* filterData = m_filter.get(object); |
+ if (filterData->markedForRemoval) { |
+ delete m_filter.take(object); |
+ return; |
+ } |
+ |
if (!filterData->builded) { |
if (!filterData->savedContext) { |
removeClientFromCache(object); |