Salome HOME
23386: EDF 13811 - Crash SALOME during compute
authoreap <eap@opencascade.com>
Fri, 11 Nov 2016 13:39:46 +0000 (16:39 +0300)
committereap <eap@opencascade.com>
Fri, 11 Nov 2016 13:39:46 +0000 (16:39 +0300)
   reason: empty NbSegments in FixedPoints1D hypothesis

src/StdMeshers/StdMeshers_FixedPoints1D.cxx
src/StdMeshers/StdMeshers_FixedPoints1D.hxx
src/StdMeshers/StdMeshers_Regular_1D.cxx

index 04290a6d4c313d385a4759d93b0f03277587cb60..e316cb11af7bee8039e66d0d8c10d8a935207fa6 100644 (file)
 #include "SMESH_Algo.hxx"
 #include "SMESH_Mesh.hxx"
 
-//#include <BRep_Tool.hxx>
-//#include <GCPnts_AbscissaPoint.hxx>
-//#include <GeomAdaptor_Curve.hxx>
-//#include <Geom_Curve.hxx>
-//#include <TopExp.hxx>
-//#include <TopLoc_Location.hxx>
-//#include <TopTools_IndexedMapOfShape.hxx>
-//#include <TopoDS.hxx>
-//#include <TopoDS_Edge.hxx>
-
 using namespace std;
 
 //=============================================================================
@@ -50,14 +40,14 @@ StdMeshers_FixedPoints1D::StdMeshers_FixedPoints1D(int hypId, int studyId,
   :SMESH_Hypothesis(hypId, studyId, gen)
 {
   _name = "FixedPoints1D";
-  _param_algo_dim = 1; 
+  _param_algo_dim = 1;
   _nbsegs.reserve( 1 );
   _nbsegs.push_back( 1 );
 }
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -72,7 +62,7 @@ StdMeshers_FixedPoints1D::~StdMeshers_FixedPoints1D()
 //=============================================================================
 
 void StdMeshers_FixedPoints1D::SetPoints(std::vector<double>& listParams)
-                              throw(SALOME_Exception)
+  throw(SALOME_Exception)
 {
   _params = listParams;
   NotifySubMeshesHypothesisModification();
@@ -85,7 +75,7 @@ void StdMeshers_FixedPoints1D::SetPoints(std::vector<double>& listParams)
 //=============================================================================
 
 void StdMeshers_FixedPoints1D::SetNbSegments(std::vector<int>& listNbSeg) 
-                              throw(SALOME_Exception)
+  throw(SALOME_Exception)
 {
   _nbsegs = listNbSeg;
   NotifySubMeshesHypothesisModification();
@@ -140,7 +130,7 @@ ostream & StdMeshers_FixedPoints1D::SaveTo(ostream & save)
 
 //=============================================================================
 /*!
- *  
+ *
  */
 //=============================================================================
 
@@ -185,28 +175,6 @@ istream & StdMeshers_FixedPoints1D::LoadFrom(istream & load)
   return load;
 }
 
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-ostream & operator <<(ostream & save, StdMeshers_FixedPoints1D & hyp)
-{
-  return hyp.SaveTo( save );
-}
-
-//=============================================================================
-/*!
- *  
- */
-//=============================================================================
-
-istream & operator >>(istream & load, StdMeshers_FixedPoints1D & hyp)
-{
-  return hyp.LoadFrom( load );
-}
-
 //================================================================================
 /*!
  * \brief Initialize start and end length by the mesh built on the geometry
index bb39011188e0e8199cc8679d15d892b6e4e74d19..4855f03074fc8ad227b42f42616cfd3ac390107f 100644 (file)
@@ -61,14 +61,12 @@ public:
 
   virtual std::ostream & SaveTo(std::ostream & save);
   virtual std::istream & LoadFrom(std::istream & load);
-  friend std::ostream& operator << (std::ostream & save, StdMeshers_FixedPoints1D & hyp);
-  friend std::istream& operator >> (std::istream & load, StdMeshers_FixedPoints1D & hyp);
 
   /*!
    * \brief Initialize start and end length by the mesh built on the geometry
-    * \param theMesh - the built mesh
-    * \param theShape - the geometry of interest
-    * \retval bool - true if parameter values have been successfully defined
+    \param theMesh - the built mesh
+    \param theShape - the geometry of interest
+    \retval bool - true if parameter values have been successfully defined
    */
   virtual bool SetParametersByMesh(const SMESH_Mesh* theMesh, const TopoDS_Shape& theShape);
 
index 8a8bed9c0a586cb381dcdde928c705b4bd78585b..2f2c879f085bf09226aa356490120849a834594b 100644 (file)
@@ -994,6 +994,8 @@ bool StdMeshers_Regular_1D::computeInternalParameters(SMESH_Mesh &     theMesh,
     std::vector<int>          nbsegs = _fpHyp->GetNbSegments();
     if ( theReverse )
       std::reverse( nbsegs.begin(), nbsegs.end() );
+    if ( nbsegs.empty() )
+      nbsegs.push_back( 1 );
 
     // sort normalized params, taking into account theReverse
     TColStd_SequenceOfReal Params;