From: Christophe Bourcier Date: Fri, 27 Nov 2020 17:51:31 +0000 (+0100) Subject: Fix SIGSEGV in case MG-hexa is used on a mesh without a shape. X-Git-Tag: V9_7_0a1~5 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=7a62de42e4a246dfeaade4ee0d420b0a5778c3f1;p=plugins%2Fhexoticplugin.git Fix SIGSEGV in case MG-hexa is used on a mesh without a shape. For instance, it failed when meshing a half-cylinder surface mesh (copied to be without shape). --- diff --git a/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx b/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx index 8af68a4..887e868 100644 --- a/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx +++ b/src/HexoticPlugin/HexoticPlugin_Hexotic.cxx @@ -455,15 +455,17 @@ static bool readResult(MG_Hexotic_API* theHexaOutput, int ver, dim; int meshID = theHexaOutput->GmfOpenMesh( theFile, GmfRead, &ver, &dim ); + int nbVerticesInShape = countShape( theMesh, TopAbs_VERTEX ); int nbVertices = getNbShape(theHexaOutput, meshID, GmfVertices ); - int nbCorners = getNbShape(theHexaOutput, meshID, GmfCorners, countShape( theMesh, TopAbs_VERTEX )); + int nbCorners = getNbShape(theHexaOutput, meshID, GmfCorners, nbVerticesInShape); if ( nbVertices == 0 ) return false; tabCorner.resize( nbCorners ); HexoticNode.resize( nbVertices + 1 ); - if ( nbCorners > 0 ) + // get the shape vertices if the mesh lies on a shape (and this shape has corners) + if ( nbCorners > 0 && nbVerticesInShape > 0 ) getShape( theMeshDS, TopAbs_VERTEX, tabCorner.data() ); int nbNodes = theHexaOutput->GmfStatKwd( meshID, GmfVertices );