0029182: BOPAlgo_PaveFiller sometimes raises exception in parallel mode
authormsv <msv@opencascade.com>
Fri, 6 Oct 2017 14:07:50 +0000 (17:07 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 19 Oct 2017 09:26:47 +0000 (12:26 +0300)
commit56c62737ee9621c4e95a9cdac280d6a222885bf0
tree1384e3bd2a86a154b56a731031a2dd721f3c6302
parent5fbe3d01e65097dbefb9111e5b1538515ae0b296
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]