2018-10-12 13:15:59 |
Chad Parker |
description |
pcb crashes under certain conditions when a polygon, or a segment of a polygon has zero area. For example, creating a polygon with the following six points:
1 ______ 6
| |
| |
3| |
|\ |
| \ |
| \___|
2 4 5
If you then attempt to move point 2, pcb will die. Obviously this is not a shape that people are frequently interested in, but, a simpler case could happen accidentally quite easily:
1,3 ----------- 2
While debugging something else, I stumbled on this. In a debug build, there is failed assertion in polygon1.c:
Assertion failed: (poly_Valid (np)), function original_poly, file ../../src/polygon.c, line 329.
This appears to check the number of points in a polygon against the number of items found in an r_search. |
pcb crashes under certain conditions when a polygon, or a segment of a polygon has zero area. For example, creating a polygon with the following six points:
1 ______ 6
|******|
|******|
3|******|
|\*****|
|*\****|
|**\___|
2 4 5
(*'s are used so that the auto-formatting doesn't cause the ASCII art to collapse)
If you then attempt to move point 2, pcb will die. Obviously this is not a shape that people are frequently interested in, but, a simpler case could happen accidentally quite easily:
1,3 ----------- 2
While debugging something else, I stumbled on this. In a debug build, there is failed assertion in polygon1.c:
Assertion failed: (poly_Valid (np)), function original_poly, file ../../src/polygon.c, line 329.
This appears to check the number of points in a polygon against the number of items found in an r_search. |
|