| Index: Source/core/rendering/svg/SVGResourcesCycleSolver.cpp
|
| diff --git a/Source/core/rendering/svg/SVGResourcesCycleSolver.cpp b/Source/core/rendering/svg/SVGResourcesCycleSolver.cpp
|
| index f1a40d490b9bdebf0d91c30a7f1fd5039e7e21d9..8c48d7bd3d4ab6a29c95655d68df5200e991c3ed 100644
|
| --- a/Source/core/rendering/svg/SVGResourcesCycleSolver.cpp
|
| +++ b/Source/core/rendering/svg/SVGResourcesCycleSolver.cpp
|
| @@ -51,25 +51,14 @@ bool SVGResourcesCycleSolver::resourceContainsCycles(RenderObject* renderer) con
|
| {
|
| ASSERT(renderer);
|
|
|
| - // First operate on the resources of the given renderer.
|
| + // First (first loop iteration) operate on the resources of the given
|
| + // renderer.
|
| // <marker id="a"> <path marker-start="url(#b)"/> ...
|
| // <marker id="b" marker-start="url(#a)"/>
|
| - if (SVGResources* resources = SVGResourcesCache::cachedResourcesForRenderObject(renderer)) {
|
| - HashSet<RenderSVGResourceContainer*> resourceSet;
|
| - resources->buildSetOfResources(resourceSet);
|
| -
|
| - // Walk all resources and check wheter they reference any resource contained in the resources set.
|
| - HashSet<RenderSVGResourceContainer*>::iterator end = resourceSet.end();
|
| - for (HashSet<RenderSVGResourceContainer*>::iterator it = resourceSet.begin(); it != end; ++it) {
|
| - if (m_allResources.contains(*it))
|
| - return true;
|
| - }
|
| - }
|
| -
|
| // Then operate on the child resources of the given renderer.
|
| // <marker id="a"> <path marker-start="url(#b)"/> ...
|
| // <marker id="b"> <path marker-start="url(#a)"/> ...
|
| - for (RenderObject* child = renderer->slowFirstChild(); child; child = child->nextSibling()) {
|
| + for (RenderObject* child = renderer; child; child = child->nextInPreOrder(renderer)) {
|
| SVGResources* childResources = SVGResourcesCache::cachedResourcesForRenderObject(child);
|
| if (!childResources)
|
| continue;
|
| @@ -78,18 +67,13 @@ bool SVGResourcesCycleSolver::resourceContainsCycles(RenderObject* renderer) con
|
| HashSet<RenderSVGResourceContainer*> childSet;
|
| childResources->buildSetOfResources(childSet);
|
|
|
| - // Walk all child resources and check wheter they reference any resource contained in the resources set.
|
| + // Walk all child resources and check whether they reference any resource contained in the resources set.
|
| HashSet<RenderSVGResourceContainer*>::iterator end = childSet.end();
|
| for (HashSet<RenderSVGResourceContainer*>::iterator it = childSet.begin(); it != end; ++it) {
|
| if (m_allResources.contains(*it))
|
| return true;
|
| }
|
| -
|
| - // Walk children recursively, stop immediately if we found a cycle
|
| - if (resourceContainsCycles(child))
|
| - return true;
|
| }
|
| -
|
| return false;
|
| }
|
|
|
|
|