From 77e39787b4bf16e70d1b91c5146932b8310ca70f Mon Sep 17 00:00:00 2001
From: aml <aml@opencascade.com>
Date: Thu, 12 Mar 2015 12:21:29 +0300
Subject: [PATCH] 0025841: Incorrect edge displaying

Handling of too big step changed.
Test-case for issue #25841

Small correction in test-case
---
 src/BRepMesh/BRepMesh_EdgeTessellator.cxx  |  4 ++--
 src/GCPnts/GCPnts_TangentialDeflection.gxx |  5 +++++
 tests/bugs/modalg_5/bug25841               | 15 +++++++++++++++
 3 files changed, 22 insertions(+), 2 deletions(-)
 create mode 100644 tests/bugs/modalg_5/bug25841

diff --git a/src/BRepMesh/BRepMesh_EdgeTessellator.cxx b/src/BRepMesh/BRepMesh_EdgeTessellator.cxx
index d0c636d9d8..dfa12b8604 100644
--- a/src/BRepMesh/BRepMesh_EdgeTessellator.cxx
+++ b/src/BRepMesh/BRepMesh_EdgeTessellator.cxx
@@ -73,7 +73,7 @@ BRepMesh_EdgeTessellator::BRepMesh_EdgeTessellator(
 
   if (aCurveType == GeomAbs_BSplineCurve)
   {
-    // TODO: remove this code block when #24959 is fixed
+    // bug24220
     const Standard_Integer aNbInt = myCOnS.NbIntervals(GeomAbs_C1);
     if ( aNbInt > 0 )
     {
@@ -99,7 +99,7 @@ BRepMesh_EdgeTessellator::BRepMesh_EdgeTessellator(
       }
     }
   }
-  
+
   // PTv, chl/922/G9, Take into account internal vertices
   // it is necessary for internal edges, which do not split other edges, by their vertex
   TopExp_Explorer aVertexIt(theEdge, TopAbs_VERTEX);
diff --git a/src/GCPnts/GCPnts_TangentialDeflection.gxx b/src/GCPnts/GCPnts_TangentialDeflection.gxx
index 017e43f3dc..54c0b3bc90 100644
--- a/src/GCPnts/GCPnts_TangentialDeflection.gxx
+++ b/src/GCPnts/GCPnts_TangentialDeflection.gxx
@@ -473,6 +473,11 @@ void GCPnts_TangentialDeflection::PerformCurve (const TheCurve& C)
       else {
 
         if (Coef >= 1.5) {
+          if (!aPrevPoint.IsEqual(points.Last(), Precision::Confusion()))
+          {
+            parameters.Append (U1);
+            points    .Append (aPrevPoint);
+          }
           U2 = MiddleU;
           Du  = U2-U1;
           CurrentPoint = MiddlePoint;
diff --git a/tests/bugs/modalg_5/bug25841 b/tests/bugs/modalg_5/bug25841
new file mode 100644
index 0000000000..44aba6c215
--- /dev/null
+++ b/tests/bugs/modalg_5/bug25841
@@ -0,0 +1,15 @@
+puts "========"
+puts "OCC25841"
+puts "========"
+puts ""
+#############################
+# Incorrect edge displaying
+#############################
+
+restore [locate_data_file OCC25841_Curve_2.brep] a
+vinit
+vclear
+vfront
+vdisplay a
+vfit
+set only_screen 1