From e2ed82ab76826fe71cb635add1926e389c2fff9f Mon Sep 17 00:00:00 2001 From: eap Date: Wed, 29 Mar 2017 14:05:00 +0300 Subject: [PATCH] Fix SIGSEGV at SALOME termination after performing SALOME_TESTS/Grids/smesh/imps_05/F0 --- doc/salome/gui/SMESH/input/skew.doc | 4 ++-- resources/CMakeLists.txt | 2 ++ resources/mesh_hide.png | Bin 0 -> 344 bytes resources/mesh_show.png | Bin 0 -> 3184 bytes src/SMESH/SMESH_Gen.cxx | 26 ++++++++++++++++++--- src/SMESH/SMESH_Hypothesis.cxx | 35 ++++++++++++++-------------- src/SMESHGUI/SMESHGUI.cxx | 4 ++-- src/SMESHGUI/SMESH_images.ts | 8 +++++++ src/SMESHUtils/SMESH_TypeDefs.hxx | 1 + 9 files changed, 56 insertions(+), 24 deletions(-) create mode 100644 resources/mesh_hide.png create mode 100644 resources/mesh_show.png diff --git a/doc/salome/gui/SMESH/input/skew.doc b/doc/salome/gui/SMESH/input/skew.doc index 036c70d83..01f3c5fea 100644 --- a/doc/salome/gui/SMESH/input/skew.doc +++ b/doc/salome/gui/SMESH/input/skew.doc @@ -3,8 +3,8 @@ \page skew_page Skew \n \b Skew mesh quality criterion reflects the angle between the lines -that join opposite sides of a quadrangle element or the greatesr angle -between three medians in triangle elements. This mesh quality +that join opposite sides of a quadrangle element or the greatest angle +between a median and a midline in a triangle element. This mesh quality criterion can be applied to elements composed of 4 and 3 nodes (quadrangles and triangles). diff --git a/resources/CMakeLists.txt b/resources/CMakeLists.txt index da52e0783..d2801c905 100755 --- a/resources/CMakeLists.txt +++ b/resources/CMakeLists.txt @@ -226,6 +226,8 @@ SET(SMESH_RESOURCES_FILES mesh_extmeth_surf_offset_smooth.png mesh_extmeth_face_offset.png mesh_quality.png + mesh_show.png + mesh_hide.png ) INSTALL(FILES ${SMESH_RESOURCES_FILES} DESTINATION ${SALOME_SMESH_INSTALL_RES_DATA}) diff --git a/resources/mesh_hide.png b/resources/mesh_hide.png new file mode 100644 index 0000000000000000000000000000000000000000..31c505d82d1b08a54ac666f380e47837c04a9247 GIT binary patch literal 344 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 WTb=;+;gt>m0000::iterator i_sc = _mapStudyContext.begin(); for ( ; i_sc != _mapStudyContext.end(); ++i_sc ) { - delete i_sc->second->myDocument; - delete i_sc->second; - } + StudyContextStruct* context = i_sc->second; + std::map < int, SMESH_Hypothesis * >::iterator i_hyp = context->mapHypothesis.begin(); + for ( ; i_hyp != context->mapHypothesis.end(); ++i_hyp ) + { + if ( _Hyp* h = static_cast< _Hyp*>( i_hyp->second )) + h->NullifyGen(); + } + delete context->myDocument; + delete context; + } } //============================================================================= diff --git a/src/SMESH/SMESH_Hypothesis.cxx b/src/SMESH/SMESH_Hypothesis.cxx index 2d1e10c16..c4107fb38 100644 --- a/src/SMESH/SMESH_Hypothesis.cxx +++ b/src/SMESH/SMESH_Hypothesis.cxx @@ -25,20 +25,18 @@ // Author : Paul RASCLE, EDF // Module : SMESH // -#include "SMESH_Hypothesis.hxx" -#include "SMESHDS_Mesh.hxx" #include "SMESH_Gen.hxx" -#include "SMESH_Mesh.hxx" -#include "SMESH_subMesh.hxx" -#include "utilities.h" +#include "SMESHDS_Mesh.hxx" +#include "SMESH_Hypothesis.hxx" +#include "SMESH_Mesh.hxx" using namespace std; //============================================================================= /*! - * + * */ //============================================================================= @@ -63,8 +61,11 @@ SMESH_Hypothesis::SMESH_Hypothesis(int hypId, SMESH_Hypothesis::~SMESH_Hypothesis() { - StudyContextStruct* myStudyContext = _gen->GetStudyContext(_studyId); - myStudyContext->mapHypothesis[_hypId] = 0; + if ( _gen ) + { + StudyContextStruct* myStudyContext = _gen->GetStudyContext(_studyId); + myStudyContext->mapHypothesis[_hypId] = 0; + } } //============================================================================= @@ -77,20 +78,20 @@ int SMESH_Hypothesis::GetDim() const { int dim = 0; switch (_type) - { - case ALGO_1D: dim = 1; break; - case ALGO_2D: dim = 2; break; - case ALGO_3D: dim = 3; break; - case ALGO_0D: dim = 0; break; - case PARAM_ALGO: - dim = ( _param_algo_dim < 0 ) ? -_param_algo_dim : _param_algo_dim; break; - } + { + case ALGO_1D: dim = 1; break; + case ALGO_2D: dim = 2; break; + case ALGO_3D: dim = 3; break; + case ALGO_0D: dim = 0; break; + case PARAM_ALGO: + dim = ( _param_algo_dim < 0 ) ? -_param_algo_dim : _param_algo_dim; break; + } return dim; } //============================================================================= /*! - * + * */ //============================================================================= diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 0f08808d0..526b6c650 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -4020,8 +4020,8 @@ void SMESHGUI::initialize( CAM_Application* app ) createSMESHAction( SMESHOp::OpPropertiesArea, "MEASURE_AREA", "ICON_MEASURE_AREA" ); createSMESHAction( SMESHOp::OpPropertiesVolume, "MEASURE_VOLUME", "ICON_MEASURE_VOLUME" ); - createSMESHAction( SMESHOp::OpHide, "HIDE" ); - createSMESHAction( SMESHOp::OpShow, "SHOW" ); + createSMESHAction( SMESHOp::OpHide, "HIDE", "ICON_HIDE" ); + createSMESHAction( SMESHOp::OpShow, "SHOW", "ICON_SHOW" ); createSMESHAction( SMESHOp::OpShowOnly, "DISPLAY_ONLY" ); createSMESHAction( SMESHOp::OpSortChild, "SORT_CHILD_ITEMS" ); diff --git a/src/SMESHGUI/SMESH_images.ts b/src/SMESHGUI/SMESH_images.ts index fde04d78c..9531e409f 100644 --- a/src/SMESHGUI/SMESH_images.ts +++ b/src/SMESHGUI/SMESH_images.ts @@ -631,5 +631,13 @@ ICON_MEASURE_BND_BOX mesh_bounding_box.png + + ICON_SHOW + mesh_show.png + + + ICON_HIDE + mesh_hide.png + diff --git a/src/SMESHUtils/SMESH_TypeDefs.hxx b/src/SMESHUtils/SMESH_TypeDefs.hxx index 77c095cc1..c9be990f6 100644 --- a/src/SMESHUtils/SMESH_TypeDefs.hxx +++ b/src/SMESHUtils/SMESH_TypeDefs.hxx @@ -169,6 +169,7 @@ struct SMESH_TNodeXYZ : public gp_XYZ double SquareDistance(const SMDS_MeshNode* n) const { return (SMESH_TNodeXYZ( n )-*this).SquareModulus(); } bool operator==(const SMESH_TNodeXYZ& other) const { return _node == other._node; } }; +typedef SMESH_TNodeXYZ SMESH_NodeXYZ; //-------------------------------------------------- /*! -- 2.30.2