Summary: | cairo-path-stroke.c:1816: _cairo_rectilinear_stroker_line_to: Assertion `a->x == b->x || a->y == b->y' failed. | ||
---|---|---|---|
Product: | cairo | Reporter: | Malte Nuhn <malte.nuhn> |
Component: | general | Assignee: | Carl Worth <cworth> |
Status: | RESOLVED FIXED | QA Contact: | cairo-bugs mailing list <cairo-bugs> |
Severity: | normal | ||
Priority: | medium | ||
Version: | 1.9.5 | ||
Hardware: | x86 (IA32) | ||
OS: | Linux (All) | ||
Whiteboard: | |||
i915 platform: | i915 features: | ||
Attachments: | Trace that leads to the Assertion failure. |
Thanks for bug report, having the trace was very useful, many many thanks. commit 23bcf91748c4bb04c16e503b913da3bfc237463f Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Oct 30 07:49:56 2009 +0000 path: Misclassification of rectilinear after degenerate line-to Malte Nuhn reported hitting an assertion: cairo-path-stroke.c:1816: _cairo_rectilinear_stroker_line_to: Assertion `a->x == b->x || a->y == b->y' failed. http://bugs.freedesktop.org/show_bug.cgi?id=24797 when stroking an apparently simple path: 0 8.626485 m 0 8.626485 l 5.208333 2.5 l 10.416667 2.5 l 15.625 2.5 l 20.833333 2.5 l 26.041667 2.5 l 31.25 2.5 l 36.458333 2.5 l 41.666667 2.5 l 46.875 2.5 l 52.083333 2.5 l 57.291667 2.5 l 62.5 2.5 l 67.708333 2.5 l 72.916667 2.5 l 78.125 2.5 l 83.333333 2.5 l 88.541667 2.5 l 93.75 2.5 l 98.958333 2.5 l 104.166667 2.5 l 109.375 2.5 l 114.583333 2.5 l 119.791667 2.5 l 125 2.5 l stroke which upon reduction becomes: 0.000000 8.625000 m 5.207031 2.500000 l 125.000000 2.500000 l stroke The bug is that after spotting a repeated line-to we move the previous end-point without reclassifying the path, hence we miss the non-rectilinear step. Hope this hasn't marred your enjoyment of Cairo, and you continue to have fun! |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.
Created attachment 30820 [details] Trace that leads to the Assertion failure. The given combination of commands leads to the following assertion failure: lt-csi-replay: cairo-path-stroke.c:1816: _cairo_rectilinear_stroker_line_to: Assertion `a->x == b->x || a->y == b->y' failed. I noticed this by plotting a lot of small graphs, which basically only differ in the y-coordinates. If this is really a problem with cairo, this will strongly depend on the (x,y) coordinates of the moveto/lineto commands.