DescriptionSimplify SVGSMILElement::notifyDependentsIntervalChanged loop breaker.
To catch out recursive notifications, notifyDependentsIntervalChanged()
keeps track of the SVGSMILElements that are on the stack and being
notified, so as to bail early in case of loops.
There's no need for that set of SVGSMILElements to be recorded using
a persistent static local as the objects are stack reachable should
a conservative GC be needed, so an 'ordinary' hash set will do.
Not using a persistent reference also addresses a bad interaction with
LSan (Blink has to release all static persistents before shutting
down to prevent false leaks w/ LSan enabled), but SVGImages containing
animations may end up in this code path as part of an image resource
being finalized. Which would then encounter an empty persistent
static reference and fail (see associated bug and stack trace.)
R=haraken
BUG=610855
Committed: https://crrev.com/6d735f78334721b46d37f97ad8efb12d6e329e75
Cr-Commit-Position: refs/heads/master@{#392919}
Patch Set 1 #
Total comments: 2
Patch Set 2 : add explanatory comment re UntracedMember<> #Messages
Total messages: 14 (7 generated)
|