Salome HOME
Merge branch 'V9_5_BR'
[modules/geom.git] / src / GEOMImpl / GEOMImpl_IShapesOperations.cxx
index db197be5ce5b3afe906ca442f691599adb43bd1f..12b7f46924e6a38c045eab0e40e1321325ecd534 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2016  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -2036,10 +2036,12 @@ Standard_Boolean GEOMImpl_IShapesOperations::IsSubShapeBelongsTo( Handle(GEOM_Ob
   if ( theObjectIndex > 0 ) {
     TopExp::MapShapes( shape, anIndices );
     shape = anIndices.FindKey(theObjectIndex);
+    anIndices.Clear();
   }
   if ( theSubObjectIndex > 0 ) {
     TopExp::MapShapes( subShape, anIndices );
     subShape = anIndices.FindKey(theSubObjectIndex);
+    anIndices.Clear();
   }
 
   TopExp::MapShapes( shape, anIndices );
@@ -4794,6 +4796,10 @@ static bool isSameEdge(const TopoDS_Edge& theEdge1, const TopoDS_Edge& theEdge2)
   gp_Pnt P2 = C1->Value(U);     //Compute a point on two thirds of the edge's length
 
   C2 = new Geom_TrimmedCurve(C2, U21, U22);
+  // vsr 04/10/2018: 0023312 - As curve may be periodic, its parameters may be normalized
+  // so, we re-take them from trimmed curve
+  U21 = C2->FirstParameter();
+  U22 = C2->LastParameter();
 
   if(!GeomLib_Tool::Parameter(C2, P1, MAX_TOLERANCE, U) ||  U < U21 || U > U22)
     return false;