From: mbs Date: Tue, 16 May 2023 10:29:26 +0000 (+0100) Subject: Avoid SIGSEGV in WhatIs and PrintShapeErrors methods when shape is NULL X-Git-Tag: V9_11_0rc1^2 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=refs%2Ftlpr%2F3%2Fhead;p=modules%2Fgeom.git Avoid SIGSEGV in WhatIs and PrintShapeErrors methods when shape is NULL --- diff --git a/src/GEOM_I/GEOM_IMeasureOperations_i.cc b/src/GEOM_I/GEOM_IMeasureOperations_i.cc index a740731b4..6efb24688 100644 --- a/src/GEOM_I/GEOM_IMeasureOperations_i.cc +++ b/src/GEOM_I/GEOM_IMeasureOperations_i.cc @@ -31,6 +31,8 @@ #include "GEOM_Engine.hxx" #include "GEOM_Object.hxx" +#define WRN_SHAPE_IS_NULL "WRN_SHAPE_IS_NULL" + /** * This function converts shape errors from theErrorsFrom to theErrorsTo. * Note that theErrorsTo is not cleared at first. @@ -690,8 +692,10 @@ char* GEOM_IMeasureOperations_i::PrintShapeErrors //Get the reference shape Handle(::GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) { - return NULL; + if (aShape.IsNull()) + { + GetOperations()->SetErrorCode(WRN_SHAPE_IS_NULL); + return CORBA::string_dup(""); } // Convert the errors sequence @@ -920,7 +924,12 @@ char* GEOM_IMeasureOperations_i::WhatIs (GEOM::GEOM_Object_ptr theShape) //Get the reference shape Handle(::GEOM_Object) aShape = GetObjectImpl(theShape); - if (aShape.IsNull()) return NULL; + if (aShape.IsNull()) + { + //Assume the "WhatIs" operation as being done + GetOperations()->SetErrorCode(OK); + return CORBA::string_dup(WRN_SHAPE_IS_NULL); + } // Get shape parameters TCollection_AsciiString aDescription = GetOperations()->WhatIs(aShape);