]> SALOME platform Git repositories - plugins/netgenplugin.git/commitdiff
Salome HOME
21948: EDF SMESH : Memory is not freed when deleting a mesh
authoreap <eap@opencascade.com>
Fri, 14 Dec 2012 14:00:03 +0000 (14:00 +0000)
committereap <eap@opencascade.com>
Fri, 14 Dec 2012 14:00:03 +0000 (14:00 +0000)
   Elimenate memory leaks on CORBA objects, servants of SALOMEDS objects etc

src/NETGENPlugin/NETGENPlugin_Mesher.cxx

index d8b8e932632e182e06f0bd657ab4852a3ac5ff01..c24a5351f5c1bbf9cc38a1469bbe3e96c42f049a 100644 (file)
@@ -230,12 +230,10 @@ void NETGENPlugin_Mesher::SetParameters(const NETGENPlugin_Hypothesis* hyp)
         GEOM::GEOM_Object_var aGeomObj;
         TopoDS_Shape S = TopoDS_Shape();
         SALOMEDS::SObject_var aSObj = myStudy->FindObjectID( entry.c_str() );
-        SALOMEDS::GenericAttribute_var anAttr;
-        if (!aSObj->_is_nil() && aSObj->FindAttribute(anAttr, "AttributeIOR")) {
-          SALOMEDS::AttributeIOR_var anIOR = SALOMEDS::AttributeIOR::_narrow(anAttr);
-          CORBA::String_var aVal = anIOR->Value();
-          CORBA::Object_var obj = myStudy->ConvertIORToObject(aVal);
+        if (!aSObj->_is_nil()) {
+          CORBA::Object_var obj = aSObj->GetObject();
           aGeomObj = GEOM::GEOM_Object::_narrow(obj);
+          aSObj->UnRegister();
         }
         if ( !aGeomObj->_is_nil() )
           S = smeshGen_i->GeomObjectToShape( aGeomObj.in() );
@@ -2031,7 +2029,9 @@ namespace
   std::string text(netgen::NgException& ex)
   {
     SMESH_Comment str("NgException");
-    str << " at " << netgen::multithread.task << ": " << ex.What();
+    if ( strlen( netgen::multithread.task ) > 0 )
+      str << " at " << netgen::multithread.task;
+    str << ": " << ex.What();
     return str;
   }
 }