From 7d0496dd6dda5f816f1ca7757cc98fefb658044d Mon Sep 17 00:00:00 2001
From: ibs <ibs@opencascade.com>
Date: Thu, 19 Jun 2014 13:29:13 +0400
Subject: [PATCH] 0025020: checkoverlapedges doesn't have the check for
 degenerated edges

the check for degenerated edges added
Test case for issue CR25020
---
 src/SWDRAW/SWDRAW_ShapeFix.cxx | 14 ++++++++++++++
 tests/bugs/demo/bug25020       | 21 +++++++++++++++++++++
 2 files changed, 35 insertions(+)
 create mode 100755 tests/bugs/demo/bug25020

diff --git a/src/SWDRAW/SWDRAW_ShapeFix.cxx b/src/SWDRAW/SWDRAW_ShapeFix.cxx
index 8dc75e556c..de47ca3a6b 100644
--- a/src/SWDRAW/SWDRAW_ShapeFix.cxx
+++ b/src/SWDRAW/SWDRAW_ShapeFix.cxx
@@ -18,6 +18,7 @@
 
 #include <Draw.hxx>
 #include <DBRep.hxx>
+#include <BRep_Tool.hxx>
 #include <SWDRAW.hxx>
 #include <gp_XYZ.hxx>
 #include <gp_Pnt2d.hxx>
@@ -635,6 +636,19 @@ static Standard_Integer checkoverlapedges(Draw_Interpretor& di, Standard_Integer
      di<<"Invalid type of arguments"<<"\n";
      return 1;
    }
+
+   if (BRep_Tool::Degenerated(e1))
+   {
+     di << a[1] << " is degenerated\n";
+     return 1;
+   }
+
+   if (BRep_Tool::Degenerated(e2))
+   {
+     di << a[2] << " is degenerated\n";
+     return 1;
+   }
+
    Standard_Real aTol = Precision::Confusion();
    Standard_Real aDistDomain = 0.0;
    Standard_Integer k = 3;
diff --git a/tests/bugs/demo/bug25020 b/tests/bugs/demo/bug25020
new file mode 100755
index 0000000000..e1f51c47d5
--- /dev/null
+++ b/tests/bugs/demo/bug25020
@@ -0,0 +1,21 @@
+puts "============"
+puts "CR25020"
+puts "============"
+puts ""
+##########################################################################################################
+# checkoverlapedges doesn't have the check for degenerated edges
+##########################################################################################################
+
+restore [locate_data_file bug25020_b.brep] b
+explode b e
+
+dlog reset
+dlog on
+catch {checkoverlapedges b_1 b_2}
+set info [dlog get]
+
+if { [regexp "degenerated" ${info} ] == 1 } {
+    puts "OK : checkoverlapedges have the check for degenerated edges"
+} else {
+    puts "Error : checkoverlapedges doesn't have the check for degenerated edges"
+}