svg/W3C-SVG-1.1-SE/svgdom-over-01-f.svg crashes in Debug build
authorzherczeg@webkit.org <zherczeg@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 14 Apr 2011 12:16:30 +0000 (12:16 +0000)
committerzherczeg@webkit.org <zherczeg@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 14 Apr 2011 12:16:30 +0000 (12:16 +0000)
https://bugs.webkit.org/show_bug.cgi?id=58525

Patch by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> on 2011-04-14
Reviewed by Dirk Schulze.

A renderer is created even for those filter primitives
which parent is not a filter. A rendererIsNeeded() is
added to SVGFilterPrimitiveStandardAttributes.

Test: svg/W3C-SVG-1.1-SE/svgdom-over-01-f.svg

* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::rendererIsNeeded):
* svg/SVGFilterPrimitiveStandardAttributes.h:

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

Source/WebCore/ChangeLog
Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp
Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h

index 6013326..48ad559 100644 (file)
@@ -1,3 +1,20 @@
+2011-04-14  Zoltan Herczeg  <zherczeg@inf.u-szeged.hu>
+
+        Reviewed by Dirk Schulze.
+
+        svg/W3C-SVG-1.1-SE/svgdom-over-01-f.svg crashes in Debug build
+        https://bugs.webkit.org/show_bug.cgi?id=58525
+
+        A renderer is created even for those filter primitives
+        which parent is not a filter. A rendererIsNeeded() is
+        added to SVGFilterPrimitiveStandardAttributes.
+
+        Test: svg/W3C-SVG-1.1-SE/svgdom-over-01-f.svg
+
+        * svg/SVGFilterPrimitiveStandardAttributes.cpp:
+        (WebCore::SVGFilterPrimitiveStandardAttributes::rendererIsNeeded):
+        * svg/SVGFilterPrimitiveStandardAttributes.h:
+
 2011-04-14  Alexis Menard  <alexis.menard@openbossa.org>
 
         Reviewed by Andreas Kling.
index d34a130..fe5d09c 100644 (file)
@@ -168,6 +168,14 @@ RenderObject* SVGFilterPrimitiveStandardAttributes::createRenderer(RenderArena*
     return new (arena) RenderSVGResourceFilterPrimitive(this);
 }
 
+bool SVGFilterPrimitiveStandardAttributes::rendererIsNeeded(RenderStyle* style)
+{
+    if (parentNode() && (parentNode()->hasTagName(SVGNames::filterTag)))
+        return SVGStyledElement::rendererIsNeeded(style);
+
+    return false;
+}
+
 }
 
 #endif // ENABLE(SVG)
index 526592a..795bc11 100644 (file)
@@ -70,6 +70,7 @@ private:
     virtual bool isFilterEffect() const { return true; }
 
     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*);
+    virtual bool rendererIsNeeded(RenderStyle*);
 
     // Animated property declarations
     DECLARE_ANIMATED_LENGTH(X, x)