occt: master d30f25e6

Author Committer Branch Timestamp Parent
CharlemagneLasse afokin master 2022-04-13 12:54:30 master cec41bb9
Affected Issues  0032931: Crash in ChFi3d_IsInFront when no face was found
Changeset 0032931: Modeling Algorithms - Crash in ChFi3d_IsInFront when no face was found

The ChFi3d_IsInFront code is currently not handling all the combinations
correctly. For example, if `if(fd1->IndexOfS2() == fd2->IndexOfS2())` is
true, it can happen that the `TopoDS::Face(DStr.Shape(fd1->Index(jf1)))`
returns a Face with entity == NULL. The subsequent usage of this NULL face
in `BRep_Tool::Parameters( Vtx, face )` will then cause a segfault.

While the best approach would be to identify the implementation bug in the
algorithm behind PChFi3d_IsInFron, a check + exception is used instead
because the actual algorithm is not known.

Signed-off-by: Charlemagne Lasse <charlemagnelasse@gmail.com>
mod - src/ChFi3d/ChFi3d_Builder_0.cxx Diff File
add - tests/bugs/modalg_8/bug32931 Diff File