Title: [195259] releases/WebKitGTK/webkit-2.10/Source/WebCore
Revision
195259
Author
[email protected]
Date
2016-01-19 00:26:13 -0800 (Tue, 19 Jan 2016)

Log Message

Merge r194964 - Reference cycle between SVGPathElement and SVGPathSegWithContext leaks Document
https://bugs.webkit.org/show_bug.cgi?id=151810

Patch by Said Abou-Hallawa <[email protected]> on 2016-01-13
Reviewed by Darin Adler.

Break the reference cycle between SVGPathElement and SVGPathSegWithContext
by changing the back-pointer to be a WeakPtr pointer instead of having it
RefPtr. Make sure the SVGPathSegWithContext derived classes handle correctly
the case when the SVGPathElement back-pointer is deleted.

Also change the SVGPathElement argument to the SVGPathSeg creation functions
and constructors to be a const reference instead of having it as a pointer
since SVGPathElement is the class factory for all these classes.

* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::SVGPathElement):
(WebCore::SVGPathElement::createSVGPathSegClosePath):
(WebCore::SVGPathElement::createSVGPathSegMovetoAbs):
(WebCore::SVGPathElement::createSVGPathSegMovetoRel):
(WebCore::SVGPathElement::createSVGPathSegLinetoAbs):
(WebCore::SVGPathElement::createSVGPathSegLinetoRel):
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicAbs):
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicRel):
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticAbs):
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticRel):
(WebCore::SVGPathElement::createSVGPathSegArcAbs):
(WebCore::SVGPathElement::createSVGPathSegArcRel):
(WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalAbs):
(WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalRel):
(WebCore::SVGPathElement::createSVGPathSegLinetoVerticalAbs):
(WebCore::SVGPathElement::createSVGPathSegLinetoVerticalRel):
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs):
(WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel):
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs):
(WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel):
(WebCore::SVGPathElement::isSupportedAttribute):
* svg/SVGPathElement.h:
* svg/SVGPathSegArc.h:
(WebCore::SVGPathSegArc::SVGPathSegArc):
* svg/SVGPathSegArcAbs.h:
(WebCore::SVGPathSegArcAbs::create):
(WebCore::SVGPathSegArcAbs::SVGPathSegArcAbs):
* svg/SVGPathSegArcRel.h:
(WebCore::SVGPathSegArcRel::create):
(WebCore::SVGPathSegArcRel::SVGPathSegArcRel):
* svg/SVGPathSegClosePath.h:
(WebCore::SVGPathSegClosePath::create):
(WebCore::SVGPathSegClosePath::SVGPathSegClosePath):
* svg/SVGPathSegCurvetoCubic.h:
(WebCore::SVGPathSegCurvetoCubic::SVGPathSegCurvetoCubic):
* svg/SVGPathSegCurvetoCubicAbs.h:
(WebCore::SVGPathSegCurvetoCubicAbs::create):
(WebCore::SVGPathSegCurvetoCubicAbs::SVGPathSegCurvetoCubicAbs):
* svg/SVGPathSegCurvetoCubicRel.h:
(WebCore::SVGPathSegCurvetoCubicRel::create):
(WebCore::SVGPathSegCurvetoCubicRel::SVGPathSegCurvetoCubicRel):
* svg/SVGPathSegCurvetoCubicSmooth.h:
(WebCore::SVGPathSegCurvetoCubicSmooth::SVGPathSegCurvetoCubicSmooth):
* svg/SVGPathSegCurvetoCubicSmoothAbs.h:
(WebCore::SVGPathSegCurvetoCubicSmoothAbs::create):
(WebCore::SVGPathSegCurvetoCubicSmoothAbs::SVGPathSegCurvetoCubicSmoothAbs):
* svg/SVGPathSegCurvetoCubicSmoothRel.h:
(WebCore::SVGPathSegCurvetoCubicSmoothRel::create):
(WebCore::SVGPathSegCurvetoCubicSmoothRel::SVGPathSegCurvetoCubicSmoothRel):
* svg/SVGPathSegCurvetoQuadratic.h:
(WebCore::SVGPathSegCurvetoQuadratic::SVGPathSegCurvetoQuadratic):
* svg/SVGPathSegCurvetoQuadraticAbs.h:
(WebCore::SVGPathSegCurvetoQuadraticAbs::create):
(WebCore::SVGPathSegCurvetoQuadraticAbs::SVGPathSegCurvetoQuadraticAbs):
* svg/SVGPathSegCurvetoQuadraticRel.h:
(WebCore::SVGPathSegCurvetoQuadraticRel::create):
(WebCore::SVGPathSegCurvetoQuadraticRel::SVGPathSegCurvetoQuadraticRel):
* svg/SVGPathSegCurvetoQuadraticSmoothAbs.h:
(WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::create):
(WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::SVGPathSegCurvetoQuadraticSmoothAbs):
* svg/SVGPathSegCurvetoQuadraticSmoothRel.h:
(WebCore::SVGPathSegCurvetoQuadraticSmoothRel::create):
(WebCore::SVGPathSegCurvetoQuadraticSmoothRel::SVGPathSegCurvetoQuadraticSmoothRel):
* svg/SVGPathSegLinetoAbs.h:
(WebCore::SVGPathSegLinetoAbs::create):
(WebCore::SVGPathSegLinetoAbs::SVGPathSegLinetoAbs):
* svg/SVGPathSegLinetoHorizontal.h:
(WebCore::SVGPathSegLinetoHorizontal::SVGPathSegLinetoHorizontal):
* svg/SVGPathSegLinetoHorizontalAbs.h:
(WebCore::SVGPathSegLinetoHorizontalAbs::create):
(WebCore::SVGPathSegLinetoHorizontalAbs::SVGPathSegLinetoHorizontalAbs):
* svg/SVGPathSegLinetoHorizontalRel.h:
(WebCore::SVGPathSegLinetoHorizontalRel::create):
(WebCore::SVGPathSegLinetoHorizontalRel::SVGPathSegLinetoHorizontalRel):
* svg/SVGPathSegLinetoRel.h:
(WebCore::SVGPathSegLinetoRel::create):
(WebCore::SVGPathSegLinetoRel::SVGPathSegLinetoRel):
* svg/SVGPathSegLinetoVertical.h:
(WebCore::SVGPathSegLinetoVertical::SVGPathSegLinetoVertical):
* svg/SVGPathSegLinetoVerticalAbs.h:
(WebCore::SVGPathSegLinetoVerticalAbs::create):
(WebCore::SVGPathSegLinetoVerticalAbs::SVGPathSegLinetoVerticalAbs):
* svg/SVGPathSegLinetoVerticalRel.h:
(WebCore::SVGPathSegLinetoVerticalRel::create):
(WebCore::SVGPathSegLinetoVerticalRel::SVGPathSegLinetoVerticalRel):
* svg/SVGPathSegMovetoAbs.h:
(WebCore::SVGPathSegMovetoAbs::create):
(WebCore::SVGPathSegMovetoAbs::SVGPathSegMovetoAbs):
* svg/SVGPathSegMovetoRel.h:
(WebCore::SVGPathSegMovetoRel::create):
(WebCore::SVGPathSegMovetoRel::SVGPathSegMovetoRel):
* svg/SVGPathSegWithContext.h:
(WebCore::SVGPathSegWithContext::SVGPathSegWithContext):
(WebCore::SVGPathSegWithContext::animatedProperty):
(WebCore::SVGPathSegWithContext::contextElement):
(WebCore::SVGPathSegWithContext::setContextAndRole):
(WebCore::SVGPathSegWithContext::commitChange):
(WebCore::SVGPathSegSingleCoordinate::setY):
(WebCore::SVGPathSegSingleCoordinate::SVGPathSegSingleCoordinate):
* svg/properties/SVGPathSegListPropertyTearOff.cpp:
(WebCore::SVGPathSegListPropertyTearOff::clearContextAndRoles):
(WebCore::SVGPathSegListPropertyTearOff::replaceItem):
(WebCore::SVGPathSegListPropertyTearOff::removeItem):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/ChangeLog	2016-01-19 08:26:13 UTC (rev 195259)
@@ -1,3 +1,124 @@
+2016-01-13  Said Abou-Hallawa  <[email protected]>
+
+        Reference cycle between SVGPathElement and SVGPathSegWithContext leaks Document
+        https://bugs.webkit.org/show_bug.cgi?id=151810
+
+        Reviewed by Darin Adler.
+
+        Break the reference cycle between SVGPathElement and SVGPathSegWithContext
+        by changing the back-pointer to be a WeakPtr pointer instead of having it
+        RefPtr. Make sure the SVGPathSegWithContext derived classes handle correctly
+        the case when the SVGPathElement back-pointer is deleted.
+
+        Also change the SVGPathElement argument to the SVGPathSeg creation functions
+        and constructors to be a const reference instead of having it as a pointer
+        since SVGPathElement is the class factory for all these classes.
+
+        * svg/SVGPathElement.cpp:
+        (WebCore::SVGPathElement::SVGPathElement):
+        (WebCore::SVGPathElement::createSVGPathSegClosePath):
+        (WebCore::SVGPathElement::createSVGPathSegMovetoAbs):
+        (WebCore::SVGPathElement::createSVGPathSegMovetoRel):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoAbs):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticRel):
+        (WebCore::SVGPathElement::createSVGPathSegArcAbs):
+        (WebCore::SVGPathElement::createSVGPathSegArcRel):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalAbs):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoHorizontalRel):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalAbs):
+        (WebCore::SVGPathElement::createSVGPathSegLinetoVerticalRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs):
+        (WebCore::SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel):
+        (WebCore::SVGPathElement::isSupportedAttribute):
+        * svg/SVGPathElement.h:
+        * svg/SVGPathSegArc.h:
+        (WebCore::SVGPathSegArc::SVGPathSegArc):
+        * svg/SVGPathSegArcAbs.h:
+        (WebCore::SVGPathSegArcAbs::create):
+        (WebCore::SVGPathSegArcAbs::SVGPathSegArcAbs):
+        * svg/SVGPathSegArcRel.h:
+        (WebCore::SVGPathSegArcRel::create):
+        (WebCore::SVGPathSegArcRel::SVGPathSegArcRel):
+        * svg/SVGPathSegClosePath.h:
+        (WebCore::SVGPathSegClosePath::create):
+        (WebCore::SVGPathSegClosePath::SVGPathSegClosePath):
+        * svg/SVGPathSegCurvetoCubic.h:
+        (WebCore::SVGPathSegCurvetoCubic::SVGPathSegCurvetoCubic):
+        * svg/SVGPathSegCurvetoCubicAbs.h:
+        (WebCore::SVGPathSegCurvetoCubicAbs::create):
+        (WebCore::SVGPathSegCurvetoCubicAbs::SVGPathSegCurvetoCubicAbs):
+        * svg/SVGPathSegCurvetoCubicRel.h:
+        (WebCore::SVGPathSegCurvetoCubicRel::create):
+        (WebCore::SVGPathSegCurvetoCubicRel::SVGPathSegCurvetoCubicRel):
+        * svg/SVGPathSegCurvetoCubicSmooth.h:
+        (WebCore::SVGPathSegCurvetoCubicSmooth::SVGPathSegCurvetoCubicSmooth):
+        * svg/SVGPathSegCurvetoCubicSmoothAbs.h:
+        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::create):
+        (WebCore::SVGPathSegCurvetoCubicSmoothAbs::SVGPathSegCurvetoCubicSmoothAbs):
+        * svg/SVGPathSegCurvetoCubicSmoothRel.h:
+        (WebCore::SVGPathSegCurvetoCubicSmoothRel::create):
+        (WebCore::SVGPathSegCurvetoCubicSmoothRel::SVGPathSegCurvetoCubicSmoothRel):
+        * svg/SVGPathSegCurvetoQuadratic.h:
+        (WebCore::SVGPathSegCurvetoQuadratic::SVGPathSegCurvetoQuadratic):
+        * svg/SVGPathSegCurvetoQuadraticAbs.h:
+        (WebCore::SVGPathSegCurvetoQuadraticAbs::create):
+        (WebCore::SVGPathSegCurvetoQuadraticAbs::SVGPathSegCurvetoQuadraticAbs):
+        * svg/SVGPathSegCurvetoQuadraticRel.h:
+        (WebCore::SVGPathSegCurvetoQuadraticRel::create):
+        (WebCore::SVGPathSegCurvetoQuadraticRel::SVGPathSegCurvetoQuadraticRel):
+        * svg/SVGPathSegCurvetoQuadraticSmoothAbs.h:
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::create):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothAbs::SVGPathSegCurvetoQuadraticSmoothAbs):
+        * svg/SVGPathSegCurvetoQuadraticSmoothRel.h:
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::create):
+        (WebCore::SVGPathSegCurvetoQuadraticSmoothRel::SVGPathSegCurvetoQuadraticSmoothRel):
+        * svg/SVGPathSegLinetoAbs.h:
+        (WebCore::SVGPathSegLinetoAbs::create):
+        (WebCore::SVGPathSegLinetoAbs::SVGPathSegLinetoAbs):
+        * svg/SVGPathSegLinetoHorizontal.h:
+        (WebCore::SVGPathSegLinetoHorizontal::SVGPathSegLinetoHorizontal):
+        * svg/SVGPathSegLinetoHorizontalAbs.h:
+        (WebCore::SVGPathSegLinetoHorizontalAbs::create):
+        (WebCore::SVGPathSegLinetoHorizontalAbs::SVGPathSegLinetoHorizontalAbs):
+        * svg/SVGPathSegLinetoHorizontalRel.h:
+        (WebCore::SVGPathSegLinetoHorizontalRel::create):
+        (WebCore::SVGPathSegLinetoHorizontalRel::SVGPathSegLinetoHorizontalRel):
+        * svg/SVGPathSegLinetoRel.h:
+        (WebCore::SVGPathSegLinetoRel::create):
+        (WebCore::SVGPathSegLinetoRel::SVGPathSegLinetoRel):
+        * svg/SVGPathSegLinetoVertical.h:
+        (WebCore::SVGPathSegLinetoVertical::SVGPathSegLinetoVertical):
+        * svg/SVGPathSegLinetoVerticalAbs.h:
+        (WebCore::SVGPathSegLinetoVerticalAbs::create):
+        (WebCore::SVGPathSegLinetoVerticalAbs::SVGPathSegLinetoVerticalAbs):
+        * svg/SVGPathSegLinetoVerticalRel.h:
+        (WebCore::SVGPathSegLinetoVerticalRel::create):
+        (WebCore::SVGPathSegLinetoVerticalRel::SVGPathSegLinetoVerticalRel):
+        * svg/SVGPathSegMovetoAbs.h:
+        (WebCore::SVGPathSegMovetoAbs::create):
+        (WebCore::SVGPathSegMovetoAbs::SVGPathSegMovetoAbs):
+        * svg/SVGPathSegMovetoRel.h:
+        (WebCore::SVGPathSegMovetoRel::create):
+        (WebCore::SVGPathSegMovetoRel::SVGPathSegMovetoRel):
+        * svg/SVGPathSegWithContext.h:
+        (WebCore::SVGPathSegWithContext::SVGPathSegWithContext):
+        (WebCore::SVGPathSegWithContext::animatedProperty):
+        (WebCore::SVGPathSegWithContext::contextElement):
+        (WebCore::SVGPathSegWithContext::setContextAndRole):
+        (WebCore::SVGPathSegWithContext::commitChange):
+        (WebCore::SVGPathSegSingleCoordinate::setY):
+        (WebCore::SVGPathSegSingleCoordinate::SVGPathSegSingleCoordinate):
+        * svg/properties/SVGPathSegListPropertyTearOff.cpp:
+        (WebCore::SVGPathSegListPropertyTearOff::clearContextAndRoles):
+        (WebCore::SVGPathSegListPropertyTearOff::replaceItem):
+        (WebCore::SVGPathSegListPropertyTearOff::removeItem):
+
 2016-01-13  YongGeol Jung  <[email protected]>
 
         [TexMap] BitmapTextureGL is not released while scene is updated continuously.

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathElement.cpp (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathElement.cpp	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathElement.cpp	2016-01-19 08:26:13 UTC (rev 195259)
@@ -82,6 +82,7 @@
     : SVGGraphicsElement(tagName, document)
     , m_pathByteStream(std::make_unique<SVGPathByteStream>())
     , m_pathSegList(PathSegUnalteredRole)
+    , m_weakPtrFactory(this)
     , m_isAnimValObserved(false)
 {
     ASSERT(hasTagName(SVGNames::pathTag));
@@ -116,97 +117,97 @@
 
 Ref<SVGPathSegClosePath> SVGPathElement::createSVGPathSegClosePath(SVGPathSegRole role)
 {
-    return SVGPathSegClosePath::create(this, role);
+    return SVGPathSegClosePath::create(*this, role);
 }
 
 Ref<SVGPathSegMovetoAbs> SVGPathElement::createSVGPathSegMovetoAbs(float x, float y, SVGPathSegRole role)
 {
-    return SVGPathSegMovetoAbs::create(this, role, x, y);
+    return SVGPathSegMovetoAbs::create(*this, role, x, y);
 }
 
 Ref<SVGPathSegMovetoRel> SVGPathElement::createSVGPathSegMovetoRel(float x, float y, SVGPathSegRole role)
 {
-    return SVGPathSegMovetoRel::create(this, role, x, y);
+    return SVGPathSegMovetoRel::create(*this, role, x, y);
 }
 
 Ref<SVGPathSegLinetoAbs> SVGPathElement::createSVGPathSegLinetoAbs(float x, float y, SVGPathSegRole role)
 {
-    return SVGPathSegLinetoAbs::create(this, role, x, y);
+    return SVGPathSegLinetoAbs::create(*this, role, x, y);
 }
 
 Ref<SVGPathSegLinetoRel> SVGPathElement::createSVGPathSegLinetoRel(float x, float y, SVGPathSegRole role)
 {
-    return SVGPathSegLinetoRel::create(this, role, x, y);
+    return SVGPathSegLinetoRel::create(*this, role, x, y);
 }
 
 Ref<SVGPathSegCurvetoCubicAbs> SVGPathElement::createSVGPathSegCurvetoCubicAbs(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoCubicAbs::create(this, role, x, y, x1, y1, x2, y2);
+    return SVGPathSegCurvetoCubicAbs::create(*this, role, x, y, x1, y1, x2, y2);
 }
 
 Ref<SVGPathSegCurvetoCubicRel> SVGPathElement::createSVGPathSegCurvetoCubicRel(float x, float y, float x1, float y1, float x2, float y2, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoCubicRel::create(this, role, x, y, x1, y1, x2, y2);
+    return SVGPathSegCurvetoCubicRel::create(*this, role, x, y, x1, y1, x2, y2);
 }
 
 Ref<SVGPathSegCurvetoQuadraticAbs> SVGPathElement::createSVGPathSegCurvetoQuadraticAbs(float x, float y, float x1, float y1, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoQuadraticAbs::create(this, role, x, y, x1, y1);
+    return SVGPathSegCurvetoQuadraticAbs::create(*this, role, x, y, x1, y1);
 }
 
 Ref<SVGPathSegCurvetoQuadraticRel> SVGPathElement::createSVGPathSegCurvetoQuadraticRel(float x, float y, float x1, float y1, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoQuadraticRel::create(this, role, x, y, x1, y1);
+    return SVGPathSegCurvetoQuadraticRel::create(*this, role, x, y, x1, y1);
 }
 
 Ref<SVGPathSegArcAbs> SVGPathElement::createSVGPathSegArcAbs(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role)
 {
-    return SVGPathSegArcAbs::create(this, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
+    return SVGPathSegArcAbs::create(*this, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
 }
 
 Ref<SVGPathSegArcRel> SVGPathElement::createSVGPathSegArcRel(float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag, SVGPathSegRole role)
 {
-    return SVGPathSegArcRel::create(this, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
+    return SVGPathSegArcRel::create(*this, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag);
 }
 
 Ref<SVGPathSegLinetoHorizontalAbs> SVGPathElement::createSVGPathSegLinetoHorizontalAbs(float x, SVGPathSegRole role)
 {
-    return SVGPathSegLinetoHorizontalAbs::create(this, role, x);
+    return SVGPathSegLinetoHorizontalAbs::create(*this, role, x);
 }
 
 Ref<SVGPathSegLinetoHorizontalRel> SVGPathElement::createSVGPathSegLinetoHorizontalRel(float x, SVGPathSegRole role)
 {
-    return SVGPathSegLinetoHorizontalRel::create(this, role, x);
+    return SVGPathSegLinetoHorizontalRel::create(*this, role, x);
 }
 
 Ref<SVGPathSegLinetoVerticalAbs> SVGPathElement::createSVGPathSegLinetoVerticalAbs(float y, SVGPathSegRole role)
 {
-    return SVGPathSegLinetoVerticalAbs::create(this, role, y);
+    return SVGPathSegLinetoVerticalAbs::create(*this, role, y);
 }
 
 Ref<SVGPathSegLinetoVerticalRel> SVGPathElement::createSVGPathSegLinetoVerticalRel(float y, SVGPathSegRole role)
 {
-    return SVGPathSegLinetoVerticalRel::create(this, role, y);
+    return SVGPathSegLinetoVerticalRel::create(*this, role, y);
 }
 
 Ref<SVGPathSegCurvetoCubicSmoothAbs> SVGPathElement::createSVGPathSegCurvetoCubicSmoothAbs(float x, float y, float x2, float y2, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoCubicSmoothAbs::create(this, role, x, y, x2, y2);
+    return SVGPathSegCurvetoCubicSmoothAbs::create(*this, role, x, y, x2, y2);
 }
 
 Ref<SVGPathSegCurvetoCubicSmoothRel> SVGPathElement::createSVGPathSegCurvetoCubicSmoothRel(float x, float y, float x2, float y2, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoCubicSmoothRel::create(this, role, x, y, x2, y2);
+    return SVGPathSegCurvetoCubicSmoothRel::create(*this, role, x, y, x2, y2);
 }
 
 Ref<SVGPathSegCurvetoQuadraticSmoothAbs> SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothAbs(float x, float y, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoQuadraticSmoothAbs::create(this, role, x, y);
+    return SVGPathSegCurvetoQuadraticSmoothAbs::create(*this, role, x, y);
 }
 
 Ref<SVGPathSegCurvetoQuadraticSmoothRel> SVGPathElement::createSVGPathSegCurvetoQuadraticSmoothRel(float x, float y, SVGPathSegRole role)
 {
-    return SVGPathSegCurvetoQuadraticSmoothRel::create(this, role, x, y);
+    return SVGPathSegCurvetoQuadraticSmoothRel::create(*this, role, x, y);
 }
 
 bool SVGPathElement::isSupportedAttribute(const QualifiedName& attrName)

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathElement.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathElement.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathElement.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -97,6 +97,8 @@
 
     bool isAnimValObserved() const { return m_isAnimValObserved; }
 
+    WeakPtr<SVGPathElement> createWeakPtr() const { return m_weakPtrFactory.createWeakPtr(); }
+
 private:
     SVGPathElement(const QualifiedName&, Document&);
 
@@ -126,6 +128,7 @@
 private:
     std::unique_ptr<SVGPathByteStream> m_pathByteStream;
     mutable SVGSynchronizableAnimatedProperty<SVGPathSegList> m_pathSegList;
+    WeakPtrFactory<SVGPathElement> m_weakPtrFactory;
     bool m_isAnimValObserved;
 };
 

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArc.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArc.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArc.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -27,7 +27,7 @@
 
 class SVGPathSegArc : public SVGPathSegWithContext {
 public:
-    SVGPathSegArc(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+    SVGPathSegArc(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
         : SVGPathSegWithContext(element, role)
         , m_x(x)
         , m_y(y)

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArcAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArcAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArcAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegArcAbs : public SVGPathSegArc {
 public:
-    static Ref<SVGPathSegArcAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+    static Ref<SVGPathSegArcAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
     {
         return adoptRef(*new SVGPathSegArcAbs(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag));
     }
 
 private:
-    SVGPathSegArcAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+    SVGPathSegArcAbs(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
         : SVGPathSegArc(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArcRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArcRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegArcRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegArcRel : public SVGPathSegArc {
 public:
-    static Ref<SVGPathSegArcRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+    static Ref<SVGPathSegArcRel> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
     {
         return adoptRef(*new SVGPathSegArcRel(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag));
     }
 
 private:
-    SVGPathSegArcRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
+    SVGPathSegArcRel(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float r1, float r2, float angle, bool largeArcFlag, bool sweepFlag)
         : SVGPathSegArc(element, role, x, y, r1, r2, angle, largeArcFlag, sweepFlag)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegClosePath.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegClosePath.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegClosePath.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -27,13 +27,13 @@
 
 class SVGPathSegClosePath : public SVGPathSegWithContext {
 public:
-    static Ref<SVGPathSegClosePath> create(SVGPathElement* element, SVGPathSegRole role)
+    static Ref<SVGPathSegClosePath> create(const SVGPathElement& element, SVGPathSegRole role)
     {
         return adoptRef(*new SVGPathSegClosePath(element, role));
     }
 
 private:
-    SVGPathSegClosePath(SVGPathElement* element, SVGPathSegRole role)
+    SVGPathSegClosePath(const SVGPathElement& element, SVGPathSegRole role)
         : SVGPathSegWithContext(element, role)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubic.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubic.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubic.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -27,7 +27,7 @@
 
 class SVGPathSegCurvetoCubic : public SVGPathSegWithContext { 
 public:
-    SVGPathSegCurvetoCubic(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
+    SVGPathSegCurvetoCubic(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
         : SVGPathSegWithContext(element, role)
         , m_x(x)
         , m_y(y)

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoCubicAbs : public SVGPathSegCurvetoCubic {
 public:
-    static Ref<SVGPathSegCurvetoCubicAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
+    static Ref<SVGPathSegCurvetoCubicAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
     {
         return adoptRef(*new SVGPathSegCurvetoCubicAbs(element, role, x, y, x1, y1, x2, y2));
     }
 
 private:
-    SVGPathSegCurvetoCubicAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
+    SVGPathSegCurvetoCubicAbs(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
         : SVGPathSegCurvetoCubic(element, role, x, y, x1, y1, x2, y2)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoCubicRel : public SVGPathSegCurvetoCubic {
 public:
-    static Ref<SVGPathSegCurvetoCubicRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
+    static Ref<SVGPathSegCurvetoCubicRel> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
     {
         return adoptRef(*new SVGPathSegCurvetoCubicRel(element, role, x, y, x1, y1, x2, y2));
     }
 
 private:
-    SVGPathSegCurvetoCubicRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
+    SVGPathSegCurvetoCubicRel(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1, float x2, float y2)
         : SVGPathSegCurvetoCubic(element, role, x, y, x1, y1, x2, y2)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmooth.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -27,7 +27,7 @@
 
 class SVGPathSegCurvetoCubicSmooth : public SVGPathSegWithContext {
 public:
-    SVGPathSegCurvetoCubicSmooth(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
+    SVGPathSegCurvetoCubicSmooth(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x2, float y2)
         : SVGPathSegWithContext(element, role)
         , m_x(x)
         , m_y(y)

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSegCurvetoCubicSmooth {
 public:
-    static Ref<SVGPathSegCurvetoCubicSmoothAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
+    static Ref<SVGPathSegCurvetoCubicSmoothAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x2, float y2)
     {
         return adoptRef(*new SVGPathSegCurvetoCubicSmoothAbs(element, role, x, y, x2, y2));
     }
 
 private:
-    SVGPathSegCurvetoCubicSmoothAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
+    SVGPathSegCurvetoCubicSmoothAbs(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x2, float y2)
         : SVGPathSegCurvetoCubicSmooth(element, role, x, y, x2, y2)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoCubicSmoothRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSegCurvetoCubicSmooth {
 public:
-    static Ref<SVGPathSegCurvetoCubicSmoothRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
+    static Ref<SVGPathSegCurvetoCubicSmoothRel> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x2, float y2)
     {
         return adoptRef(*new SVGPathSegCurvetoCubicSmoothRel(element, role, x, y, x2, y2));
     }
 
 private:
-    SVGPathSegCurvetoCubicSmoothRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x2, float y2)
+    SVGPathSegCurvetoCubicSmoothRel(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x2, float y2)
         : SVGPathSegCurvetoCubicSmooth(element, role, x, y, x2, y2)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadratic.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadratic.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadratic.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -27,7 +27,7 @@
 
 class SVGPathSegCurvetoQuadratic : public SVGPathSegWithContext { 
 public:
-    SVGPathSegCurvetoQuadratic(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
+    SVGPathSegCurvetoQuadratic(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1)
         : SVGPathSegWithContext(element, role)
         , m_x(x)
         , m_y(y)

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoQuadraticAbs : public SVGPathSegCurvetoQuadratic {
 public:
-    static Ref<SVGPathSegCurvetoQuadraticAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
+    static Ref<SVGPathSegCurvetoQuadraticAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1)
     {
         return adoptRef(*new SVGPathSegCurvetoQuadraticAbs(element, role, x, y, x1, y1));
     }
 
 private:
-    SVGPathSegCurvetoQuadraticAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
+    SVGPathSegCurvetoQuadraticAbs(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1)
         : SVGPathSegCurvetoQuadratic(element, role, x, y, x1, y1)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoQuadraticRel : public SVGPathSegCurvetoQuadratic {
 public:
-    static Ref<SVGPathSegCurvetoQuadraticRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
+    static Ref<SVGPathSegCurvetoQuadraticRel> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1)
     {
         return adoptRef(*new SVGPathSegCurvetoQuadraticRel(element, role, x, y, x1, y1));
     }
 
 private:
-    SVGPathSegCurvetoQuadraticRel(SVGPathElement* element, SVGPathSegRole role, float x, float y, float x1, float y1)
+    SVGPathSegCurvetoQuadraticRel(const SVGPathElement& element, SVGPathSegRole role, float x, float y, float x1, float y1)
         : SVGPathSegCurvetoQuadratic(element, role, x, y, x1, y1)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoQuadraticSmoothAbs : public SVGPathSegSingleCoordinate {
 public:
-    static Ref<SVGPathSegCurvetoQuadraticSmoothAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    static Ref<SVGPathSegCurvetoQuadraticSmoothAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
     {
         return adoptRef(*new SVGPathSegCurvetoQuadraticSmoothAbs(element, role, x, y));
     }
 
 private:
-    SVGPathSegCurvetoQuadraticSmoothAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    SVGPathSegCurvetoQuadraticSmoothAbs(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
         : SVGPathSegSingleCoordinate(element, role, x, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegCurvetoQuadraticSmoothRel : public SVGPathSegSingleCoordinate {
 public:
-    static Ref<SVGPathSegCurvetoQuadraticSmoothRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    static Ref<SVGPathSegCurvetoQuadraticSmoothRel> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
     {
         return adoptRef(*new SVGPathSegCurvetoQuadraticSmoothRel(element, role, x, y));
     }
 
 private:
-    SVGPathSegCurvetoQuadraticSmoothRel(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    SVGPathSegCurvetoQuadraticSmoothRel(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
         : SVGPathSegSingleCoordinate(element, role, x, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegLinetoAbs : public SVGPathSegSingleCoordinate {
 public:
-    static Ref<SVGPathSegLinetoAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    static Ref<SVGPathSegLinetoAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
     {
         return adoptRef(*new SVGPathSegLinetoAbs(element, role, x, y));
     }
 
 private:
-    SVGPathSegLinetoAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    SVGPathSegLinetoAbs(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
         : SVGPathSegSingleCoordinate(element, role, x, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontal.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontal.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontal.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -27,7 +27,7 @@
 
 class SVGPathSegLinetoHorizontal : public SVGPathSegWithContext {
 public:
-    SVGPathSegLinetoHorizontal(SVGPathElement* element, SVGPathSegRole role, float x)
+    SVGPathSegLinetoHorizontal(const SVGPathElement& element, SVGPathSegRole role, float x)
         : SVGPathSegWithContext(element, role)
         , m_x(x)
     {

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontalAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontalAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontalAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegLinetoHorizontalAbs : public SVGPathSegLinetoHorizontal {
 public:
-    static Ref<SVGPathSegLinetoHorizontalAbs> create(SVGPathElement* element, SVGPathSegRole role, float x)
+    static Ref<SVGPathSegLinetoHorizontalAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x)
     {
         return adoptRef(*new SVGPathSegLinetoHorizontalAbs(element, role, x));
     }
 
 private:
-    SVGPathSegLinetoHorizontalAbs(SVGPathElement* element, SVGPathSegRole role, float x)
+    SVGPathSegLinetoHorizontalAbs(const SVGPathElement& element, SVGPathSegRole role, float x)
         : SVGPathSegLinetoHorizontal(element, role, x)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontalRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontalRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoHorizontalRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegLinetoHorizontalRel : public SVGPathSegLinetoHorizontal {
 public:
-    static Ref<SVGPathSegLinetoHorizontalRel> create(SVGPathElement* element, SVGPathSegRole role, float x)
+    static Ref<SVGPathSegLinetoHorizontalRel> create(const SVGPathElement& element, SVGPathSegRole role, float x)
     {
         return adoptRef(*new SVGPathSegLinetoHorizontalRel(element, role, x));
     }
 
 private:
-    SVGPathSegLinetoHorizontalRel(SVGPathElement* element, SVGPathSegRole role, float x)
+    SVGPathSegLinetoHorizontalRel(const SVGPathElement& element, SVGPathSegRole role, float x)
         : SVGPathSegLinetoHorizontal(element, role, x)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegLinetoRel : public SVGPathSegSingleCoordinate {
 public:
-    static Ref<SVGPathSegLinetoRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    static Ref<SVGPathSegLinetoRel> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
     {
         return adoptRef(*new SVGPathSegLinetoRel(element, role, x, y));
     }
 
 private:
-    SVGPathSegLinetoRel(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    SVGPathSegLinetoRel(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
         : SVGPathSegSingleCoordinate(element, role, x, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVertical.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVertical.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVertical.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -27,7 +27,7 @@
 
 class SVGPathSegLinetoVertical : public SVGPathSegWithContext {
 public:
-    SVGPathSegLinetoVertical(SVGPathElement* element, SVGPathSegRole role, float y)
+    SVGPathSegLinetoVertical(const SVGPathElement& element, SVGPathSegRole role, float y)
         : SVGPathSegWithContext(element, role)
         , m_y(y)
     {

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVerticalAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVerticalAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVerticalAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegLinetoVerticalAbs : public SVGPathSegLinetoVertical {
 public:
-    static Ref<SVGPathSegLinetoVerticalAbs> create(SVGPathElement* element, SVGPathSegRole role, float y)
+    static Ref<SVGPathSegLinetoVerticalAbs> create(const SVGPathElement& element, SVGPathSegRole role, float y)
     {
         return adoptRef(*new SVGPathSegLinetoVerticalAbs(element, role, y));
     }
 
 private:
-    SVGPathSegLinetoVerticalAbs(SVGPathElement* element, SVGPathSegRole role, float y)
+    SVGPathSegLinetoVerticalAbs(const SVGPathElement& element, SVGPathSegRole role, float y)
         : SVGPathSegLinetoVertical(element, role, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVerticalRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVerticalRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegLinetoVerticalRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegLinetoVerticalRel : public SVGPathSegLinetoVertical {
 public:
-    static Ref<SVGPathSegLinetoVerticalRel> create(SVGPathElement* element, SVGPathSegRole role, float y)
+    static Ref<SVGPathSegLinetoVerticalRel> create(const SVGPathElement& element, SVGPathSegRole role, float y)
     {
         return adoptRef(*new SVGPathSegLinetoVerticalRel(element, role, y));
     }
 
 private:
-    SVGPathSegLinetoVerticalRel(SVGPathElement* element, SVGPathSegRole role, float y)
+    SVGPathSegLinetoVerticalRel(const SVGPathElement& element, SVGPathSegRole role, float y)
         : SVGPathSegLinetoVertical(element, role, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegMovetoAbs.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegMovetoAbs.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegMovetoAbs.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegMovetoAbs : public SVGPathSegSingleCoordinate {
 public:
-    static Ref<SVGPathSegMovetoAbs> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    static Ref<SVGPathSegMovetoAbs> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
     {
         return adoptRef(*new SVGPathSegMovetoAbs(element, role, x, y));
     }
 
 private:
-    SVGPathSegMovetoAbs(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    SVGPathSegMovetoAbs(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
         : SVGPathSegSingleCoordinate(element, role, x, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegMovetoRel.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegMovetoRel.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegMovetoRel.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -28,13 +28,13 @@
 
 class SVGPathSegMovetoRel : public SVGPathSegSingleCoordinate {
 public:
-    static Ref<SVGPathSegMovetoRel> create(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    static Ref<SVGPathSegMovetoRel> create(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
     {
         return adoptRef(*new SVGPathSegMovetoRel(element, role, x, y));
     }
 
 private:
-    SVGPathSegMovetoRel(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    SVGPathSegMovetoRel(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
         : SVGPathSegSingleCoordinate(element, role, x, y)
     {
     }

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegWithContext.h (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegWithContext.h	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/SVGPathSegWithContext.h	2016-01-19 08:26:13 UTC (rev 195259)
@@ -26,25 +26,28 @@
 
 class SVGPathSegWithContext : public SVGPathSeg {
 public:
-    SVGPathSegWithContext(SVGPathElement* element, SVGPathSegRole role)
+    SVGPathSegWithContext(const SVGPathElement& element, SVGPathSegRole role)
         : m_role(role)
-        , m_element(element)
+        , m_element(element.createWeakPtr())
     {
     }
 
     SVGAnimatedProperty* animatedProperty() const
     {
+        if (!m_element)
+            return nullptr;
+
         switch (m_role) {
         case PathSegUndefinedRole:
-            return 0;
+            return nullptr;
         case PathSegUnalteredRole:
             return SVGAnimatedProperty::lookupWrapper<SVGPathElement, SVGAnimatedPathSegListPropertyTearOff>(m_element.get(), SVGPathElement::dPropertyInfo());
         case PathSegNormalizedRole:
             // FIXME: https://bugs.webkit.org/show_bug.cgi?id=15412 - Implement normalized path segment lists!
-            return 0;
+            return nullptr;
         };
 
-        return 0;
+        return nullptr;
     }
 
     SVGPathElement* contextElement() const { return m_element.get(); }
@@ -53,24 +56,20 @@
     void setContextAndRole(SVGPathElement* element, SVGPathSegRole role)
     {
         m_role = role;
-        m_element = element;
+        m_element = element ? element->createWeakPtr() : WeakPtr<SVGPathElement>();
     }
 
 protected:
     void commitChange()
     {
-        if (!m_element) {
-            ASSERT(m_role == PathSegUndefinedRole);
+        if (!m_element || m_role == PathSegUndefinedRole)
             return;
-        }
-
-        ASSERT(m_role != PathSegUndefinedRole);
         m_element->pathSegListChanged(m_role);
     }
 
 private:
     SVGPathSegRole m_role;
-    RefPtr<SVGPathElement> m_element;
+    WeakPtr<SVGPathElement> m_element;
 };
 
 class SVGPathSegSingleCoordinate : public SVGPathSegWithContext { 
@@ -90,7 +89,7 @@
     }
 
 protected:
-    SVGPathSegSingleCoordinate(SVGPathElement* element, SVGPathSegRole role, float x, float y)
+    SVGPathSegSingleCoordinate(const SVGPathElement& element, SVGPathSegRole role, float x, float y)
         : SVGPathSegWithContext(element, role)
         , m_x(x)
         , m_y(y)

Modified: releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp (195258 => 195259)


--- releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp	2016-01-19 08:23:53 UTC (rev 195258)
+++ releases/WebKitGTK/webkit-2.10/Source/WebCore/svg/properties/SVGPathSegListPropertyTearOff.cpp	2016-01-19 08:26:13 UTC (rev 195259)
@@ -31,7 +31,7 @@
 {
     ASSERT(m_values);
     for (auto& item : *m_values) {
-        static_cast<SVGPathSegWithContext*>(item.get())->setContextAndRole(0, PathSegUndefinedRole);
+        static_cast<SVGPathSegWithContext*>(item.get())->setContextAndRole(nullptr, PathSegUndefinedRole);
     }
 }
 
@@ -66,7 +66,7 @@
     if (index < m_values->size()) {
         ListItemType replacedItem = m_values->at(index);
         ASSERT(replacedItem);
-        static_cast<SVGPathSegWithContext*>(replacedItem.get())->setContextAndRole(0, PathSegUndefinedRole);
+        static_cast<SVGPathSegWithContext*>(replacedItem.get())->setContextAndRole(nullptr, PathSegUndefinedRole);
     }
 
     return Base::replaceItemValues(newItem, index, ec);
@@ -76,7 +76,7 @@
 {
     SVGPathSegListPropertyTearOff::ListItemType removedItem = SVGPathSegListPropertyTearOff::Base::removeItemValues(index, ec);
     if (removedItem)
-        static_cast<SVGPathSegWithContext*>(removedItem.get())->setContextAndRole(0, PathSegUndefinedRole);
+        static_cast<SVGPathSegWithContext*>(removedItem.get())->setContextAndRole(nullptr, PathSegUndefinedRole);
     return removedItem;
 }
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to