- Revision
- 101895
- Author
- [email protected]
- Date
- 2011-12-02 19:12:34 -0800 (Fri, 02 Dec 2011)
Log Message
Divide by zero for zero-length arcs
https://bugs.webkit.org/show_bug.cgi?id=73021
Source/WebCore:
Patch by Stephen Chenney <[email protected]> on 2011-12-02
Reviewed by Nikolas Zimmermann.
A zero-length path produces divide by zero, resulting in nothing being
drawn. This change modifies the behavior to produce a zero-length line
which will generate correct linecaps.
Test: svg/stroke/zero-length-arc-linecaps-rendering.svg
* svg/SVGPathParser.cpp:
(WebCore::SVGPathParser::parseArcToSegment): Catch the case of
zero-length arcs and convert them to lines (the same as would happen
for zero arc radii).
LayoutTests:
A zero-length path produces divide by zero, resulting in nothing being
drawn. This change modifies the behavior to produce a zero-length line
which will generate correct linecaps.
Patch by Stephen Chenney <[email protected]> on 2011-12-02
Reviewed by Nikolas Zimmermann.
* platform/chromium/test_expectations.txt: Added flakiness for the new test until wehave expectations.
* platform/mac/svg/stroke: Added.
* platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.png: Added.
* platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.txt: Added.
* svg/stroke/zero-length-arc-linecaps-rendering.svg: Added.
Modified Paths
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (101894 => 101895)
--- trunk/LayoutTests/ChangeLog 2011-12-03 02:43:43 UTC (rev 101894)
+++ trunk/LayoutTests/ChangeLog 2011-12-03 03:12:34 UTC (rev 101895)
@@ -1,3 +1,20 @@
+2011-12-02 Stephen Chenney <[email protected]>
+
+ Divide by zero for zero-length arcs
+ https://bugs.webkit.org/show_bug.cgi?id=73021
+
+ A zero-length path produces divide by zero, resulting in nothing being
+ drawn. This change modifies the behavior to produce a zero-length line
+ which will generate correct linecaps.
+
+ Reviewed by Nikolas Zimmermann.
+
+ * platform/chromium/test_expectations.txt: Added flakiness for the new test until wehave expectations.
+ * platform/mac/svg/stroke: Added.
+ * platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.png: Added.
+ * platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.txt: Added.
+ * svg/stroke/zero-length-arc-linecaps-rendering.svg: Added.
+
2011-12-02 Aaron Colwell <[email protected]>
Adding mixed content tests for video tag.
Modified: trunk/LayoutTests/platform/chromium/test_expectations.txt (101894 => 101895)
--- trunk/LayoutTests/platform/chromium/test_expectations.txt 2011-12-03 02:43:43 UTC (rev 101894)
+++ trunk/LayoutTests/platform/chromium/test_expectations.txt 2011-12-03 03:12:34 UTC (rev 101895)
@@ -816,7 +816,7 @@
// SVG TESTS
// -----------------------------------------------------------------
-// BUGWK73677 : svg/stroke/zero-length-arc-linecaps-rendering.svg = PASS IMAGE
+BUGWK73677 : svg/stroke/zero-length-arc-linecaps-rendering.svg = PASS IMAGE
BUGCR8763 MAC : svg/custom/use-on-g-containing-foreignObject-and-image.svg = IMAGE
Added: trunk/LayoutTests/platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.png (0 => 101895)
--- trunk/LayoutTests/platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.png (rev 0)
+++ trunk/LayoutTests/platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.png 2011-12-03 03:12:34 UTC (rev 101895)
@@ -0,0 +1,46 @@
+\x89PNG
+
+
+IHDR X \x9Av\x82p )tEXtchecksum d9d1f402b6923c65591f068cad434429l\x8A\xA3 \xEEiCCPICC Profile x\x85T\xCFkA\xFE6n\xA9\xD0"Zk\xB2x\x90"IY\xABhE\xD46\xFDbk\xDB\xB6E\x90d3I\xD6n6\xEB\xEE&\xB5\xA5\x88\xE4\xE2\xD1*\xDEE\xED\xA1\xFF\x80z\xF0d/J\x85ZE(ޫ(b\xA1-\xF1\xCDnL\xB6\xA5\xEA\xC0\xCE~\xF3\xDE7\xEF}ov\xDF
+r\xD24\xF5\x80\xE4
+\xC7R\xA2il|Bj\xFC\x88 \x8E\xA2 A4%U\xDB\xECN$A\x83s\xF9{\xE7\xD8z\x81[V\xC3{\xFBw\xB2w\xAD\x9AҶ\x9A\x84\xFD@\xE0G\x9A\xD9*\xB0\xEFq
+Y\x88<ߡ)\xC7t\xDF\xE3\xD8\xF2\xEC\x8F9Nyx\xC1\xB5+=\xC4Y"|@5-\xCEM\xB8S\xCD%\xD3@\x83H8\x94\xF5qR>\x9C\x94\xD7inf\xC6\xC8\xBDO\x90\xA6\xBB\xCC\xEE\xABb\xA1\x9CN\xF6\x90\xBD\x9D\xF4~N\xB3\xDE>\xC2!\xC2\xAD?F\xB8\x8D\x9E\xF5\x8C\xD5?\xE2a\xE1\xA4\xE6Ć=5\xF4\xF8`\xB7\xA9\xF85\xC2_M'\xA2Tq\xD9.
+\xF1\x98\xAE\xFDV\xF2J\x82p\x908\xCAda\x80sZHO\xD7Ln\xF8\xBA\x87}&\xD7\xAF\xE2wVQ\xE1y\x8Fg\xDE\xD4\xDD\xEFE\xDA\xAF0\x9A
+HPEa\x98\xB0P@\x86<14\xB2r?#\xAB\x93{2u$j\xBBtbD\xB1A{6\xDC=\xB7Q\xA4\xDD<\xFE("q\x94C\xB5\x92\xFCA\xFE*\xAF\xC9O\xE5y\xF9\xCB\\xB0\xD8V\x{1D4B5B}\x9A\xBA\xF2\xE0;\xC5噹\xD7\xD3\xC8\xE3sM^|\x95\xD4v\x93WG\x96\xACyz\xBC\x9A\xEC?\xECW\x971\xE6\x825\x8F\xC4s\xB0\xFB\xF1-_\x95̗)\x8C\xC5\xE3U\xF3\xEAK\x84uZ17ߟl;=\xE2.\xCF.\xB5\xD6s\xAD\x89\x8B7V\x9B\x97g\xFDjH\xFB\x93\xE6U\xF9O^\xF5\xF1\xFCg\xCD\xC4c\xE2)1&v\x8A\xE7!\x89\x97\xC5.\xF1\x92\xD8K\xAB\xE2`m\xC7\x9D\x95\x86)\xD2m\x91\xFA$\xD5``\x9A\xBC\xF5/]?[x\xBDF\xF5Q\x94\xCC\xD2T\x89\xF7\xC2*d4\x9D\xB9o\xFA\x8F\xDB\xC7\xFC\xE4\xF7\x8A\xE7\x9F(/l\xE0ș\xBAmSq\xEF\xA1e\xA5ns\xAE\xBF\xD1}\xF0\xB6nk\xA3~8\xFCX<\xAB\xADR5\x9F \xBCv\x87z\xE8)\x98Ӗ\x96\xCD9R\x87,\x9F\x93\xBA\xE9\xCAbR\xCCP\xDBCRR\xD7%\xD7eK\xB3\x99Ub\xE9vؙ\xD3n\xA19B\xF7ħJe\x93\xFA\xAF\xF1\xB0\xFD\xB0R\xF9\xF9\xACR\xD9~Nց\x97\xFAo\xC0\xBC\xFDE\xC0x\x8B\x89 IDATx\xED\xDD\xC1\xAB\x9Dw\x9D\xF0\xDFm\xC2Mk\xA9HZŠP\xD0fY\xEF?P\\xB9A\x8A\x8B.QL\xBA-\xB3(R\xBA\xBA\xB5\x91\x91\xC5\xC0E7\xAEJ\xFF\x81k\x97\xA3 \x8CD\xBA\xB0-2\xA5\xB6\xB9$\xCD\xE4\xAD\x86\xF4$\xBD\xEF=Ǔ\xE7}\xEE\xE7lJ\xD2s\xCF\xF9>\x9F\xA7\x8B>\x9C\xE4ޝ[\xB7Ã @\x80 [xh\xEF\xE1- @\x80 \xF0\xB1\x80\xE2? @\x80 \xB6&`\x80l\x8D\xDA @\x80 `\x80\xF8o\x80 @\x80 \x81\xAD \x9C\xDC\xD4;}t\xF3\xC6\xD8\xFD\xD5\xF1\xC6\xFEk\xE3\xCDw\xAF\x8C\xAB\xE3\xED\xF1\xD6\xEE\xC1xo\xF7\xC7\xFD\xB1\x83\x9D\xF1\xE4\xC1\xEE8;\x9EO\x9F>7\x9E\xD9{v\xEC}\xFD\xBB\xE3\xA1;a#QZrlË @\x80 ذ\xC0κ\xDF\xEB/\xF8\xED\xB8\xF4\x8B\x8B\xE3\xF2\xF5\xFDq\xEDћ\xB3\xCE;\xF3\xFE\x89q\xFE\xD4/|\xE5k\xB3\xBEv\xD3Onɱi\xAFG\x80 @`\x93G \xEF\\xFB\xE3x\xE1\x95o\x8D\x9F\x9F\xBA2N\xACw\xD2\xEE\xED\xDD\xF2\xBD\xEB\xE7\xC6K5?\xF3\xE5\xF5^l\xE6W\xB7\xE4\x98\xDB\xD3 @\x80 <\x81#
+\x90\xFF\xFE\xCF\xE7ƅ?]\xEF<\xB2\xD9!\xF2\xF8;\xE3\xD2S\xC6w\xBE\xFF\x93\xAD`\xB4\xE4\xD8
+\x967!@\x80 \xB0\x81Y\xE4\xC6\xC1\x87\xE3\xE2O\x8F\x9F}\xE6wx\xEB{\xBF\xC4\xFE\xFE\xD5\xF1\xCAKo\x8E\x93\xBB\xDF\xFBIk\xFC\x9B\x96k\xF8R @\x80 D\xE0\xD0\xE4\x83\xFF}w|\xFB\xC7\xFF2~\xF3\xB9\xBFn\xE5\xD0o\xFC\xED\xF3\xE3\x97/\xFE~<\xF2\xD9\xD3}\xBF\x96E\xF1b @\x80 \xB6$p\xA82}b\xF0\xCD翸\xB5\xF1q'\xFB4B~\xFD\xF2\x9F7\xF6IHK\x8E;>\xFEI\x80 @`i\x87\xFA9 \xD3\xBB\xDA\xD6'\xFFpz\xCF\xE9\xBD7\xF5hɱ)\xAFC\x80 @`\xDB\x9F:@\xA6\xBF\xA8\xFD\xCF\xFE;\xF7=\xBD\xF7tú\x8F\x96\xEB:\xF8z @\x80 R\xE0\xBEk\xFA\xB5g/\x9D\xDD\xF8w\xBB\x9Ax\xFA\xEEXW/\=\xF2\xB7\xE8m\xC91\xD7\xCD\xF3 @\x80 \xA4 \xDC\xF7\x90\xE9\xE7|l\xFA[\xED`\xBAa\xBA娏\x96G\xCD\xEF\xEB @\x80 \xA4\xDCs\x80\\xBB\xBA\xFF\xF1L9t\xFA\x81\x87\xD3O+\x9F\xFBh\xC917\xB7\xE7 @\x80 H\xB8\xE7 \xF9\xE9\xE5\xE7\xD6\xFE \xE7\x9B<\xFD\xB4\xF5K\xBF\xB88\xFB%[r\xCC\xEE @\x80
+\xAC ݼ1._ߏ;w\xBAi\xBA\x{DC0F}\x96\x87\xCD\xEBy @\x80 \xD2V\x90\xFD\xD7_\xD7\xBDw\xFBt\xD3t\xDBa-9\x9B\xD7\xF3 @\x80 \xA4\xAC o\xEC\xBF{\xF7\x9C\xDB\xE6<wہ\x93o۶\x85\xF7#@\x80 8>+ț\xEF^\x89\x98sۜ\xE7n;p\xF2m۶\xF0~ @\x80 \xC7G`\xE5 \xB9:ގ\x98sۜ\xE7n;p\xF2m۶\xF0~ @\x80 \xC7G`\xE5 yk\xF7 V`\xCEms\x9E\xBB\xED\xC0ɷm\xDB\xC2\xFB @\x80 \x81\x95\xE4\xBD\xDD[\xB1sn\x9B\xF3\xDCmN\xBEm\xDBޏ @\xE0\xF8\xAC \xC7'\xBE\xA4 @\x80 lS`\xE5 y\xEC`g\x9B7\xCCz\xAF9\xB7\xCDy\xEE\xAC#6\xF0\xE4\xE4\xDB6\xCFK @\x80 X)\xB0r\x80<y\xB0\xBB\xF2\xC9 \xBF9\xE7\xB69\xCF\xDDv\xB6\xE4۶m\xE1\xFD @\x80 \x8E\x8F\xC0\xCArv<+0\xE7\xB69\xCF\xDDv\xE0\xE4۶m\xE1\xFD @\x80 \x8E\x8F\xC0\xCA\xF2\xF4\xE9s\xB1sn\x9B\xF3\xDCmN\xBEm\xDBޏ @\xE0\xF8\xAC \xCF\xEC=+0\xE7\xB69\xCF\xDDv\xE0\xE4۶m\xE1\xFD @\x80 \x8E\x8F\xC0έۏ\xBB\xE3~t\xF3\xC6\xF8ҿ=<\xAE=z\xF3\xEE\xF5@}\xE6\xFD\xE3\xFE\xFD\xC3\xF1Љ\x93\x87\xBA\xA3%ǡ\xC2z @\x80 \x81\xAC\xFCd\xFA\xFC\xF3\xA7\xF6\xE2Οn:\xEC\xF8\x98\x8Eo\xC9W\x84\x83 @\x80 Q`\xE5' \xD3k\xFD\xE5\xBFO]\xDE'\x8E\xF8\xCA\xFE\xB2\xDD\xDB\xC6\xFC\xE9\xFC\xFE\xF8\xC2W\xBE6\xEB\x95[r\xCC
+\xED\xC9 @\x80 BV~2\xDD:\xFD\x8F\xFE\xF7\xAE\xE7\xFCe\xF4閹\xE3\xA3)G\xE8?\xCE"@\x80 0K\xE0\x9E\x9F\x80L\xAF\xF2ε?\x8E\xB3\x97Ύw\xF9\xC4_\x99\xF5&\xEB>\xF9\xF1v\xC6\xD5W\xC7\xE3g\xBE|\xA4\x97j\xC9q\xA4\xF0\xBE\x88 @\x80@\x90\xC0=?\x99n\x9C\xFE\x87\xFF\xD2S\xF8\xB9\xD3
+GM9x @\x80 \xB0\xA6\xC0}?\xB9\xF3\xDA?|\xFE\xDC\xF8\xD9g~w\xE7\x97[\xFD\xE7\xFE\xFE\xD5\xF1/_\xD9\xC8{\xB6\xE4\xD8\x86!@\x80 \xF0 5@n|8\xBE\xF9\xFC\xC7o>\xF7\x9E\xF8\x8D\xBF}~\xFC\xFA\xE5?\x8F\x93\xBBo\xE4}[rlË @\x80 x \xF7\xFD#Xw\xEE\x99\xC0/_\xFC\xFD\x98\xC1\xB6\xD3{M﹩\xF11\xDDݒc[x @\x80 \x9B8\xD4 \x99\xDE\xF4\x91Ϟ\xFE\xF8ӈ\xE9\x8FD\xFD\xB3\xD3{L\x9F|L\xEF\xB9\xE9GK\x8EM\xBBx= @\x80 \xDB8\xF4 \x99\x8E\x99>A\x98\xFE>\xC6=yqLߙjӏ\xE95\xA7מ\xDEc\x93\x9F|\xDC}gK\x8E\xBBs\xF95 @\x80 \x81t\x81C\xFD\x90U!\xA6om\xFB\xC2+\xDF??ue\xEDV8\xFD\x90\xC1\xE9\xE7|\xBCt\xF1Wk}\xB7\xABUw~\xDA\xEF\xB5\xE4\xF8\xB4\x9C\xFE= @\x80 \x81\x81#\x90;\xC7_\xBB\xBA?~z\xF9\xB9q\xF9\xFA\xFE\xB8\xF6\xE8\xED%1\xE3q\xE6\xFD\xE3\xFC\xA9\xBD\xF1\xA3\xF3?g\xCE\xEE\xCD\xF8\xCA\xCD?\xB5%\xC7\xE6e\xBC" @\x80 \x81\xCD \xAC=@\xEE\x9C\xF2\xD1\xCDc\xFF\xF5W\xC7\xFB\xAF\x8D7߽2\xAE\x8E\xB7\xC7[\xBB\xE3\xBD\xDD\xFC\xC3\xC7vƓ\xBB\xE3\xECxb<}\xFA\xDCxf\xEFٱ\xF7\xF5N\x9C\xBC\xF3\xFFl\xC9\x81\xE9 @\x80 w ll\x80\xDC\xF5\xBA~I\x80 @\x80 \x81O\xCC\xFAK\xE8\x9F\xF8j\xBFA\x80 @\x80 \x81\xC8,O%@\x80 @`=d=?_M\x80 @\x80\xC0d\x96\xA7 @\x80 \xB0\x9E\x80\xB2\x9E\x9F\xAF&@\x80 @`\x86\x802\xCBS @\x80 XO\xC0 Y\xCF\xCFW @\x80 0C\xC0 \x99\x81\xE5\xA9 @\x80 \xAC'`\x80\xAC\xE7\xE7\xAB @\x80 \x98!pr\xD5sw^\xDCY\xF5\xDB1\xBFw\xEBǷuKK\x8EC\x85\xF5$ @\x80 \xF0 \xC8Jr" @\x80 \x81\xA4\xA5I9 @\x80 ,@\xC0 Y@IN$@\x80 \xD0"`\x80\xB44) @\x80 \x81 (ɉ @\x80 Z\x90\x96&\xE5 @\x80 \xB0 d%9\x91 @\x80@\x8B\x80\xD2Ҥ @\x80 `\x80,\xA0$' @\x80 h0@Z\x9A\x94\x83 @\x80\xC0\x90\x94\xE4D @\x80 -HK\x93r @\x80 X\x80\x80\xB2\x80\x92\x9CH\x80 @\xA0E\xC0 iiR @\x80 0@P\x92 @\x80 \xB4 -M\xCAA\x80 @`\xC8Jr" @\x80 \x81\xA4\xA5I9 @\x80 ,@\xC0 Y@IN$@\x80 \xD0"`\x80\xB44) @\x80 \x81 (ɉ @\x80 Z\x90\x96&\xE5 @\x80 \xB0 d%9\x91 @\x80@\x8B\x80\xD2Ҥ @\x80 `\x80,\xA0$' @\x80 h0@Z\x9A\x94\x83 @\x80\xC0\x90\x94\xE4D @\x80 -HK\x93r @\x80 X\x80\x80\xB2\x80\x92\x9CH\x80 @\xA0E\xC0 iiR @\x80 0@P\x92 @\x80 \xB4 -M\xCAA\x80 @`\xC8Jr" @\x80 \x81\xA4\xA5I9 @\x80 ,@\xC0 Y@IN$@\x80 \xD0"`\x80\xB44) @\x80 \x81 (ɉ @\x80 Z\x90\x96&\xE5 @\x80 \xB0 d%9\x91 @\x80@\x8B\xC0έۏ\x960r @\x80 \x90-\xE0\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`0\xF1 IDAT\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xC0 \xC9\xEE\xC7u @\x80 \xAA\x90\xAA:\x85!@\x80 \x90-`\x80d\xF7\xE3: @\x80 UHU\x9D\xC2 @\x80 \xC80@\xB2\xFBq @\x80 \x81*\xA4\xAANa @\x80 d \xD9\xFD\xB8\x8E @\x80@\x95\x80RU\xA70 @\x80 \xB2\x90\xEC~\G\x80 @\xA0J\xC0 \xA9\xAAS @\x80 \xD9Hv?\xAE#@\x80 P%`\x80T\xD5) @\x80 \x81l$\xBB\xD7 @\x80 \xA80@\xAA\xEA\x86 @\x80@\xB6\x80\x92ݏ\xEB @\x80 T Uu
+C\x80 @ [\xE0\xFF \xEC\x8618" IEND\xAEB`\x82
\ No newline at end of file
Added: trunk/LayoutTests/platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.txt (0 => 101895)
--- trunk/LayoutTests/platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.txt (rev 0)
+++ trunk/LayoutTests/platform/mac/svg/stroke/zero-length-arc-linecaps-rendering-expected.txt 2011-12-03 03:12:34 UTC (rev 101895)
@@ -0,0 +1,21 @@
+layer at (0,0) size 800x600
+ RenderView at (0,0) size 800x600
+layer at (0,0) size 800x600
+ RenderSVGRoot {svg} at (5,5) size 90x90
+ RenderSVGContainer {g} at (5,5) size 90x90
+ RenderSVGContainer {g} at (5,5) size 40x90
+ RenderSVGContainer {use} at (5,5) size 40x90
+ RenderSVGContainer {g} at (5,5) size 40x90
+ RenderSVGContainer {g} at (5,5) size 40x90
+ RenderSVGPath {circle} at (5,5) size 40x40 [fill={[type=SOLID] [color=#FF0000]}] [cx=25.00] [cy=25.00] [r=20.00]
+ RenderSVGPath {rect} at (5,55) size 40x40 [fill={[type=SOLID] [color=#FF0000]}] [x=5.00] [y=55.00] [width=40.00] [height=40.00]
+ RenderSVGPath {path} at (5,5) size 40x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}] [stroke={[type=SOLID] [color=#008000] [stroke width=40.00] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [data="" 0 0 L 0 0"]
+ RenderSVGPath {path} at (5,55) size 40x40 [stroke={[type=SOLID] [color=#008000] [stroke width=40.00] [line cap=SQUARE]}] [fill={[type=SOLID] [color=#000000]}] [data="" 25 75 L 25 75"]
+ RenderSVGContainer {g} at (55,5) size 40x90 [transform={m=((1.00,0.00)(0.00,1.00)) t=(50.00,0.00)}]
+ RenderSVGContainer {use} at (55,5) size 40x90
+ RenderSVGContainer {g} at (55,5) size 40x90
+ RenderSVGContainer {g} at (55,5) size 40x90
+ RenderSVGPath {circle} at (55,5) size 40x40 [fill={[type=SOLID] [color=#FF0000]}] [cx=25.00] [cy=25.00] [r=20.00]
+ RenderSVGPath {rect} at (55,55) size 40x40 [fill={[type=SOLID] [color=#FF0000]}] [x=5.00] [y=55.00] [width=40.00] [height=40.00]
+ RenderSVGPath {path} at (55,5) size 40x40 [transform={m=((1.00,0.00)(0.00,1.00)) t=(25.00,25.00)}] [stroke={[type=SOLID] [color=#008000] [stroke width=40.00] [line cap=ROUND]}] [fill={[type=SOLID] [color=#000000]}] [data="" 0 0 L 0 0"]
+ RenderSVGPath {path} at (55,55) size 40x40 [stroke={[type=SOLID] [color=#008000] [stroke width=40.00] [line cap=SQUARE]}] [fill={[type=SOLID] [color=#000000]}] [data="" 25 75 L 25 75"]
Added: trunk/LayoutTests/svg/stroke/zero-length-arc-linecaps-rendering.svg (0 => 101895)
--- trunk/LayoutTests/svg/stroke/zero-length-arc-linecaps-rendering.svg (rev 0)
+++ trunk/LayoutTests/svg/stroke/zero-length-arc-linecaps-rendering.svg 2011-12-03 03:12:34 UTC (rev 101895)
@@ -0,0 +1,24 @@
+<svg id="svg-root" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
+ <g id="test-body-content">
+ <def>
+ <g id="CheckCircles">
+ <circle cx="25" cy="25" r="20" fill="red" />
+ <rect x="5" y="55" width="40" height="40" fill="red" />
+ </g>
+ </def>
+
+ <g id="arc-tests-sweep-1">
+ <use xlink:href="" />
+
+ <path transform="translate(25,25)" d="M 0 0 A 20 20 90 0 1 0 0" stroke="green" stroke-width="40" stroke-linecap="round" />
+ <path d="M 25 75 a 20 20 90 0 1 0 0" stroke="green" stroke-width="40" stroke-linecap="square" />
+ </g>
+
+ <g id="arc-tests-sweep-0" transform="translate(50, 0)">
+ <use xlink:href="" />
+
+ <path transform="translate(25,25)" d="M 0 0 A 20 20 90 0 0 0 0" stroke="green" stroke-width="40" stroke-linecap="round" />
+ <path d="M 25 75 a 20 20 90 0 0 0 0" stroke="green" stroke-width="40" stroke-linecap="square" />
+ </g>
+ </g>
+</svg>
Modified: trunk/Source/WebCore/ChangeLog (101894 => 101895)
--- trunk/Source/WebCore/ChangeLog 2011-12-03 02:43:43 UTC (rev 101894)
+++ trunk/Source/WebCore/ChangeLog 2011-12-03 03:12:34 UTC (rev 101895)
@@ -1,3 +1,21 @@
+2011-12-02 Stephen Chenney <[email protected]>
+
+ Divide by zero for zero-length arcs
+ https://bugs.webkit.org/show_bug.cgi?id=73021
+
+ Reviewed by Nikolas Zimmermann.
+
+ A zero-length path produces divide by zero, resulting in nothing being
+ drawn. This change modifies the behavior to produce a zero-length line
+ which will generate correct linecaps.
+
+ Test: svg/stroke/zero-length-arc-linecaps-rendering.svg
+
+ * svg/SVGPathParser.cpp:
+ (WebCore::SVGPathParser::parseArcToSegment): Catch the case of
+ zero-length arcs and convert them to lines (the same as would happen
+ for zero arc radii).
+
2011-12-02 James Wei <[email protected]> & Xingnan Wang <[email protected]>
-Implement the SSE optimization for vsmul and vadd.
Modified: trunk/Source/WebCore/svg/SVGPathParser.cpp (101894 => 101895)
--- trunk/Source/WebCore/svg/SVGPathParser.cpp 2011-12-03 02:43:43 UTC (rev 101894)
+++ trunk/Source/WebCore/svg/SVGPathParser.cpp 2011-12-03 03:12:34 UTC (rev 101895)
@@ -248,9 +248,18 @@
// If rx = 0 or ry = 0 then this arc is treated as a straight line segment (a "lineto") joining the endpoints.
// http://www.w3.org/TR/SVG/implnote.html#ArcOutOfRangeParameters
+ // If the current point and target point for the arc are identical, it should be treated as a zero length
+ // path. This ensures continuity in animations.
rx = fabsf(rx);
ry = fabsf(ry);
- if (!rx || !ry) {
+ bool arcIsZeroLength = false;
+ if (m_pathParsingMode == NormalizedParsing) {
+ if (m_mode == RelativeCoordinates)
+ arcIsZeroLength = targetPoint == FloatPoint::zero();
+ else
+ arcIsZeroLength = targetPoint == m_currentPoint;
+ }
+ if (!rx || !ry || arcIsZeroLength) {
if (m_pathParsingMode == NormalizedParsing) {
if (m_mode == RelativeCoordinates)
m_currentPoint += targetPoint;