901d2d4a59790c220c6589e17dbbf556d47dfe71 |
|
14-Jul-2015 |
Marc Jeanmougin <marcjeanmougin@free.fr> |
Fix for circular references detection in almost all cases, fixing https://bugs.launchpad.net/inkscape/+bug/167247 and a few of its duplicates.
This fix is aimed at preventing any sort of circular references with the URIReference::_acceptObject method, checking the absence of loops in the reference+child tree.
There can be some performance improvements done if we add a pointer from cloned sub-objects to their origin sub-object.
The remaining cases that are not fixed can involve non-trivial loops using one or more "url()" stylesheet references. Being able to take them into account would require a non-obvious style.cpp refactoring making use of URIReference for this kind of reference (and not handling manually the signals in the styling code, which would probably be a good thing to do anyway) |