]> OCCT Git - occt-copy.git/commit
0029182: BOPAlgo_PaveFiller sometimes raises exception in parallel mode
authormsv <msv@opencascade.com>
Fri, 6 Oct 2017 14:07:50 +0000 (17:07 +0300)
committerrnv <rnv@opencascade.com>
Tue, 6 Mar 2018 15:21:40 +0000 (18:21 +0300)
commitbac9b72b8f3f46d4c2e1821b70655b8f9cfb9948
tree360730b4c739d7dee8ecf4a1265ddea4ef03ef39
parent813cfec9099bda8be02517ca1ab4be1cc2966a2b
0029182: BOPAlgo_PaveFiller sometimes raises exception in parallel mode

Data races have been prevented in the code of BOPAlgo_PaveFiller that makes pcurves of edges on faces. For that:
- Put into treatment only unique edge-face pairs.
- If the same edge is treated with different faces in different threads simultaneously this also causes data races. To avoid this make the edge's copy in each thread and update the copy. The original edge is updated only after finishing parallel processing.

The new method BOPTools_AlgoTools::CopyEdge has been added to make a copy of an edge with vertices.

Big screenshot in the test script tests/bugs/modalg_7/bug28200 has been replaced with a small one.
src/BOPAlgo/BOPAlgo_PaveFiller_7.cxx
src/BOPTools/BOPTools_AlgoTools.hxx
src/BOPTools/BOPTools_AlgoTools_2.cxx
tests/bugs/modalg_7/bug28200
tests/bugs/modalg_7/bug29182 [new file with mode: 0644]
tests/bugs/modalg_7/bug29182_1 [new file with mode: 0644]