From 7a62de42e4a246dfeaade4ee0d420b0a5778c3f1 Mon Sep 17 00:00:00 2001 From: Christophe Bourcier Date: Fri, 27 Nov 2020 18:51:31 +0100 Subject: [PATCH] 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). --- src/HexoticPlugin/HexoticPlugin_Hexotic.cxx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 ); -- 2.39.2