diff --git a/src/srf/boolean.cpp b/src/srf/boolean.cpp index 296d642..6c2443e 100644 --- a/src/srf/boolean.cpp +++ b/src/srf/boolean.cpp @@ -624,16 +624,17 @@ SSurface SSurface::MakeCopyTrimAgainst(SShell *parent, } void SShell::CopySurfacesTrimAgainst(SShell *sha, SShell *shb, SShell *into, SSurface::CombineAs type) { + std::vector ssn(surface.n); #pragma omp parallel for for (int i = 0; i < surface.n; i++) { SSurface *ss = &surface[i]; - SSurface ssn; - ssn = ss->MakeCopyTrimAgainst(this, sha, shb, into, type, i); -#pragma omp critical - { - ss->newH = into->surface.AddAndAssignId(&ssn); - } + ssn[i] = ss->MakeCopyTrimAgainst(this, sha, shb, into, type, i); + } + + for (int i = 0; i < surface.n; i++) + { + surface[i].newH = into->surface.AddAndAssignId(&ssn[i]); } I += surface.n; }