From f6c4ac4b8df1aed7290a3543689e9cd343fa1de0 Mon Sep 17 00:00:00 2001
From: abv <abv@opencascade.com>
Date: Thu, 2 Jul 2015 14:33:54 +0300
Subject: [PATCH] 0026341: Uninitialized field in ShapeFix_Face

Parameter RemoveSmallAreaFaceMode in ShapeFix_Face is properly initialized; some other minor corrections
---
 src/ShapeFix/ShapeFix.cxx      | 12 ++++++------
 src/ShapeFix/ShapeFix_Face.cdl |  2 +-
 src/ShapeFix/ShapeFix_Face.cxx |  1 +
 src/XSTEPResource/STEP         |  1 +
 4 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/ShapeFix/ShapeFix.cxx b/src/ShapeFix/ShapeFix.cxx
index f1d6b54e49..000cf4fdae 100644
--- a/src/ShapeFix/ShapeFix.cxx
+++ b/src/ShapeFix/ShapeFix.cxx
@@ -288,17 +288,17 @@ TopoDS_Shape ShapeFix::RemoveSmallEdges (TopoDS_Shape& Shape,
   Handle(ShapeFix_Shape) sfs = new ShapeFix_Shape;
   sfs->Init(Shape);
   sfs->SetPrecision(Tolerance);
-  Handle(ShapeFix_Face)::DownCast(sfs->FixFaceTool())->FixMissingSeamMode() = Standard_False;
-  Handle(ShapeFix_Face)::DownCast(sfs->FixFaceTool())->FixOrientationMode() = Standard_False;
-  Handle(ShapeFix_Face)::DownCast(sfs->FixFaceTool())->FixSmallAreaWireMode() = Standard_False;
+  sfs->FixFaceTool()->FixMissingSeamMode() = Standard_False;
+  sfs->FixFaceTool()->FixOrientationMode() = Standard_False;
+  sfs->FixFaceTool()->FixSmallAreaWireMode() = Standard_False;
   sfs->FixWireTool()->ModifyTopologyMode() = Standard_True;
   //sfs.FixWireTool().FixReorderMode() = Standard_False;
   sfs->FixWireTool()->FixConnectedMode() = Standard_False;
   sfs->FixWireTool()->FixEdgeCurvesMode() = Standard_False;
   sfs->FixWireTool()->FixDegeneratedMode() = Standard_False;
-  Handle(ShapeFix_Wire)::DownCast(sfs->FixWireTool())->FixSelfIntersectionMode() = Standard_False; 
-  Handle(ShapeFix_Wire)::DownCast(sfs->FixWireTool())->FixLackingMode() = Standard_False; 
-  Handle(ShapeFix_Wire)::DownCast(sfs->FixWireTool())->FixSmallMode() = Standard_True;
+  sfs->FixWireTool()->FixSelfIntersectionMode() = Standard_False; 
+  sfs->FixWireTool()->FixLackingMode() = Standard_False; 
+  sfs->FixWireTool()->FixSmallMode() = Standard_True;
   sfs->Perform();
   TopoDS_Shape result = sfs->Shape();
   context = sfs->Context();
diff --git a/src/ShapeFix/ShapeFix_Face.cdl b/src/ShapeFix/ShapeFix_Face.cdl
index 62c4920992..cd58951871 100644
--- a/src/ShapeFix/ShapeFix_Face.cdl
+++ b/src/ShapeFix/ShapeFix_Face.cdl
@@ -209,7 +209,7 @@ is
         --          missing seam edge
         --          Returns True if missing seam was added
 
-    FixSmallAreaWire (me: mutable; theIsRemoveSmallFace: Boolean = Standard_False) returns Boolean;
+    FixSmallAreaWire (me: mutable; theIsRemoveSmallFace: Boolean) returns Boolean;
         ---Purpose: Detects wires with small area (that is less than 
         --          100*Precision::PConfusion(). Removes these wires if they are internal.
         --  Returns : True if at least one small wire removed,
diff --git a/src/ShapeFix/ShapeFix_Face.cxx b/src/ShapeFix/ShapeFix_Face.cxx
index ba90f6d7bc..b1fecfdd2a 100644
--- a/src/ShapeFix/ShapeFix_Face.cxx
+++ b/src/ShapeFix/ShapeFix_Face.cxx
@@ -166,6 +166,7 @@ void ShapeFix_Face::ClearModes()
   myFixAddNaturalBoundMode   = -1;
   myFixMissingSeamMode       = -1;
   myFixSmallAreaWireMode     = -1;
+  myRemoveSmallAreaFaceMode  = -1;
   myFixIntersectingWiresMode = -1;
   myFixLoopWiresMode         = -1;
   myFixSplitFaceMode         = -1;
diff --git a/src/XSTEPResource/STEP b/src/XSTEPResource/STEP
index 6f04a84647..15858bbebf 100755
--- a/src/XSTEPResource/STEP
+++ b/src/XSTEPResource/STEP
@@ -26,6 +26,7 @@ FromSTEP.FixShape.FixOrientationMode		: -1
 FromSTEP.FixShape.FixAddNaturalBoundMode	: -1
 FromSTEP.FixShape.FixMissingSeamMode		: -1
 FromSTEP.FixShape.FixSmallAreaWireMode		: -1
+FromSTEP.FixShape.RemoveSmallAreaFaceMode	: -1
 FromSTEP.FixShape.FixIntersectingWiresMode	: -1
 FromSTEP.FixShape.FixLoopWiresMode              : -1
 FromSTEP.FixShape.FixSplitFaceMode              : -1