The SVGAnimatedProperty wrappers have to be detached from the referenced values befor...
authorsaid@apple.com <said@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2018 01:10:13 +0000 (01:10 +0000)
committersaid@apple.com <said@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 29 Mar 2018 01:10:13 +0000 (01:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=183972

Reviewed by Daniel Bates.

If the SVGAnimatedType is a list type, e.g. SVGLengthListValues, the wrappers
of the animated properties have to be detached from the items in the list
before it's deleted.

* svg/SVGAnimateElementBase.cpp:
(WebCore::SVGAnimateElementBase::clearAnimatedType):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230063 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/svg/SVGAnimateElementBase.cpp

index 5040a9e..edbe088 100644 (file)
@@ -1,3 +1,17 @@
+2018-03-28  Said Abou-Hallawa  <sabouhallawa@apple.com>
+
+        The SVGAnimatedProperty wrappers have to be detached from the referenced values before the SVGAnimatedType is deleted
+        https://bugs.webkit.org/show_bug.cgi?id=183972
+
+        Reviewed by Daniel Bates.
+
+        If the SVGAnimatedType is a list type, e.g. SVGLengthListValues, the wrappers
+        of the animated properties have to be detached from the items in the list
+        before it's deleted.
+
+        * svg/SVGAnimateElementBase.cpp:
+        (WebCore::SVGAnimateElementBase::clearAnimatedType):
+
 2018-03-28  Ross Kirsling  <ross.kirsling@sony.com>
 
         MSVC __forceinline slows down JSC release build fivefold after r229391
index 93f3636..2a7e079 100644 (file)
@@ -303,6 +303,11 @@ void SVGAnimateElementBase::clearAnimatedType(SVGElement* targetElement)
     if (!m_animatedType)
         return;
 
+    // If the SVGAnimatedType is a list type, e.g. SVGLengthListValues, the wrappers of the
+    // animated properties have to be detached from the items in the list before it's deleted.
+    if (!m_animatedProperties.isEmpty())
+        m_animator->animValWillChange(m_animatedProperties);
+
     if (!targetElement) {
         m_animatedType = nullptr;
         return;