From 25cbd13d22218e307ca09e343b3f7e6e9f21a095 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Tue, 5 Feb 2013 14:27:24 +0000 Subject: Workaround for deadlock in face/hole merge function in carve which could happen in cases of degenerated faces. --- extern/carve/lib/intersect_face_division.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'extern/carve') diff --git a/extern/carve/lib/intersect_face_division.cpp b/extern/carve/lib/intersect_face_division.cpp index c74b52dd557..c5d5d8c5152 100644 --- a/extern/carve/lib/intersect_face_division.cpp +++ b/extern/carve/lib/intersect_face_division.cpp @@ -719,6 +719,10 @@ namespace { unassigned--; } } + + if (!removed.size()) + throw carve::exception("Failed to merge holes"); + for (std::set::iterator f = removed.begin(); f != removed.end(); ++f) { for (unsigned i = 0; i < containing_faces.size(); ++i) { containing_faces[i].erase(std::remove(containing_faces[i].begin(), -- cgit v1.2.3