Fix T51137: Edge Rip Hangs
This commit is contained in:
@@ -2403,15 +2403,20 @@ static void bmesh_kernel_vert_separate__cleanup(BMesh *bm, LinkNode *edges_separ
|
|||||||
do {
|
do {
|
||||||
LinkNode *n_orig = edges_separate->link;
|
LinkNode *n_orig = edges_separate->link;
|
||||||
do {
|
do {
|
||||||
BMEdge *e_orig = n_orig->link;
|
LinkNode *n_prev = n_orig;
|
||||||
LinkNode *n_step = n_orig->next;
|
LinkNode *n_step = n_orig->next;
|
||||||
|
BMEdge *e_orig = n_orig->link;
|
||||||
do {
|
do {
|
||||||
BMEdge *e = n_step->link;
|
BMEdge *e = n_step->link;
|
||||||
BLI_assert(e != e_orig);
|
BLI_assert(e != e_orig);
|
||||||
if ((e->v1 == e_orig->v1) && (e->v2 == e_orig->v2)) {
|
if ((e->v1 == e_orig->v1) && (e->v2 == e_orig->v2) &&
|
||||||
BM_edge_splice(bm, e_orig, e);
|
BM_edge_splice(bm, e_orig, e))
|
||||||
|
{
|
||||||
|
/* don't visit again */
|
||||||
|
n_prev->next = n_step->next;
|
||||||
}
|
}
|
||||||
} while ((n_step = n_step->next));
|
} while ((n_prev = n_step),
|
||||||
|
(n_step = n_step->next));
|
||||||
|
|
||||||
} while ((n_orig = n_orig->next) && n_orig->next);
|
} while ((n_orig = n_orig->next) && n_orig->next);
|
||||||
} while ((edges_separate = edges_separate->next));
|
} while ((edges_separate = edges_separate->next));
|
||||||
|
|||||||
Reference in New Issue
Block a user