diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-18 16:54:41 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2014-03-19 09:02:29 +0400 |
commit | 19e627cab34a04a3d01b2e3a868b7bf91d56e8f9 (patch) | |
tree | 2b01e4e108bebcf0954bb58fe734a65bc514e279 /extern | |
parent | 2525f9c5f31e90bcb8f2e8c84558a2bc35e3207c (diff) |
Backport revisions for the final 2.70 releasev2.70
e6a359a, 9437927, a205700, d908c90, a6e3471, deef641,
4080673, 0141265, 0c6e744, f959e3d, ade6646, caf5d90,
5febb09, d08e6ab, 22873ea, 3d031d1, c450ea2, 60cab47,
ed26edb, df25dbf, f127f49.
Diffstat (limited to 'extern')
-rw-r--r-- | extern/carve/lib/intersect_face_division.cpp | 4 | ||||
-rw-r--r-- | extern/carve/patches/face_hole_merge_workaround.patch | 14 | ||||
-rw-r--r-- | extern/carve/patches/series | 1 |
3 files changed, 19 insertions, 0 deletions
diff --git a/extern/carve/lib/intersect_face_division.cpp b/extern/carve/lib/intersect_face_division.cpp index e826948128c..0016724e16c 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<int>::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(), diff --git a/extern/carve/patches/face_hole_merge_workaround.patch b/extern/carve/patches/face_hole_merge_workaround.patch new file mode 100644 index 00000000000..834e03a4b12 --- /dev/null +++ b/extern/carve/patches/face_hole_merge_workaround.patch @@ -0,0 +1,14 @@ +diff -r e82d852e4fb0 lib/intersect_face_division.cpp +--- a/lib/intersect_face_division.cpp Wed Jan 15 13:16:14 2014 +1100 ++++ b/lib/intersect_face_division.cpp Thu Mar 13 15:39:26 2014 +0600 +@@ -719,6 +719,10 @@ + unassigned--; + } + } ++ ++ if (!removed.size()) ++ throw carve::exception("Failed to merge holes"); ++ + for (std::set<int>::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(), diff --git a/extern/carve/patches/series b/extern/carve/patches/series index 62a24d9d730..286d594bbef 100644 --- a/extern/carve/patches/series +++ b/extern/carve/patches/series @@ -9,3 +9,4 @@ interpolator_reorder.patch mesh_simplify_dissolve_edges.patch memory_leak_fix.patch mavc_fix.patch +face_hole_merge_workaround.patch |