diff --git a/include/earcut.hpp b/include/earcut.hpp index 87d4755..4f59792 100644 --- a/include/earcut.hpp +++ b/include/earcut.hpp @@ -668,7 +668,8 @@ Earcut::getLeftmost(Node* start) { // check if a diagonal between two polygon nodes is valid (lies in polygon interior) template bool Earcut::isValidDiagonal(Node* a, Node* b) { - return !intersectsPolygon(a, a, b) && + return a->next->i != b->i && a->prev->i != b->i && + !intersectsPolygon(a, a, b) && locallyInside(a, b) && locallyInside(b, a) && middleInside(a, a->v, b->v); }