poly2tri icon indicating copy to clipboard operation
poly2tri copied to clipboard

utils.h->InScanArea() may casue stack overflow when oadc equal zero

Open hanhongyi opened this issue 6 years ago • 0 comments

In function :

bool InScanArea(P2TPoint& pa, P2TPoint& pb, P2TPoint& pc, P2TPoint& pd){ p2tFloatType oadb = (pa.x - pb.x)(pd.y - pb.y) - (pd.x - pb.x)(pa.y - pb.y); if (oadb >= -EPSILON) { return false; }

p2tFloatType oadc = (pa.x - pc.x)(pd.y - pc.y) - (pd.x - pc.x)(pa.y - pc.y); if (oadc <= EPSILON) { <<<here!!! if oadc == 0.0f may cause stack overflow

<<< i think oadc may be ... if (oadc > -EPSILON) return true;

return false;

} return true;


data set:

p-> polygon 3 -> size (X Y) * size

subjection triangles: p 3 2540 2220 5270 1670 13410 2880

clip polygons: p 4 8475 1935 14725 1935 14725 7545 8475 7545
p 4 3055 4635 9225 4635 9225 4865 3055 4865
p 4 -6830 5310 7390 5310 7390 14650 -6830 14650
p 4 1060 4980 5360 4980 5360 12140 1060 12140
p 4 3640 1000 4080 1000 4080 8600 3640 8600

ClipType -> XOR PolyFillType -> pftNonZero

hanhongyi avatar Feb 26 '20 09:02 hanhongyi