Fix svg/custom/path-getTotalLength.svg
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Jan 2008 10:54:36 +0000 (10:54 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 18 Jan 2008 10:54:36 +0000 (10:54 +0000)
Path::apply creates a PathElement and its points array on the stack,
to fill it in from the QPainterPath data and then use the platform
independent path applier functions to calculate properties such as
the length. For converting a QPainterPath::CurveToElement we need
three points in the path element. However we allocated only two
on the stack and as a result we got memory corruption and the
failing test.

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

WebCore/ChangeLog
WebCore/platform/graphics/qt/PathQt.cpp

index ced372cbbe31dab006950d100c1d6490b035e79a..a04499e675565d4e7fd3f800ad3fd13789f267c7 100644 (file)
@@ -1,3 +1,21 @@
+2008-01-18  Simon Hausmann  <hausmann@webkit.org>
+
+        Reviewed by Holger.
+
+        Fix svg/custom/path-getTotalLength.svg
+        
+        Path::apply creates a PathElement and its points array on the stack,
+        to fill it in from the QPainterPath data and then use the platform
+        independent path applier functions to calculate properties such as
+        the length. For converting a QPainterPath::CurveToElement we need
+        three points in the path element. However we allocated only two
+        on the stack and as a result we got memory corruption and the
+        failing test.
+        
+
+        * platform/graphics/qt/PathQt.cpp:
+        (WebCore::Path::apply):
+
 2008-01-18  Simon Hausmann  <hausmann@webkit.org>
 
         Reviewed by Holger.
index 8bbcfbcf592122046e15ccd95536fc0738d27532..240350fdca2928f69a534c702b0056b844ddb523 100644 (file)
@@ -224,7 +224,7 @@ String Path::debugString() const
 void Path::apply(void* info, PathApplierFunction function) const
 {
     PathElement pelement;
-    FloatPoint points[2];
+    FloatPoint points[3];
     pelement.points = points;
     for (int i = 0; i < m_path->elementCount(); ++i) {
         const QPainterPath::Element& cur = m_path->elementAt(i);