X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESH_I%2FSMESH_Gen_i_1.cxx;h=e4e3f5e8595156f0a0439f9ba70e497731fc8300;hb=c65cc4a05360d20c47bc98bc2a3f6464d4f1a327;hp=d31ccf2d8db6ecaf681d5edde0db8696f35de486;hpb=b09372829929f8f561495d6c16527134971a1909;p=modules%2Fsmesh.git diff --git a/src/SMESH_I/SMESH_Gen_i_1.cxx b/src/SMESH_I/SMESH_Gen_i_1.cxx index d31ccf2d8..e4e3f5e85 100644 --- a/src/SMESH_I/SMESH_Gen_i_1.cxx +++ b/src/SMESH_I/SMESH_Gen_i_1.cxx @@ -535,7 +535,7 @@ SALOMEDS::SObject_ptr SMESH_Gen_i::PublishInStudy(SALOMEDS::SObject_ptr /*theSOb //======================================================================= //function : PublishComponent -//purpose : +//purpose : //======================================================================= SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent() @@ -547,9 +547,12 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent() SALOMEDS::StudyBuilder_var aStudyBuilder = getStudyServant()->NewBuilder(); SALOMEDS::UseCaseBuilder_wrap useCaseBuilder = getStudyServant()->GetUseCaseBuilder(); - std::string compDataType = ComponentDataType(); // SMESH module's data type - std::string ior = SMESH_Gen_i::GetORB()->object_to_string( SMESH_Gen::_this() ); // IOR of this SMESH engine - + CORBA::String_var compDataType = ComponentDataType(); // SMESH module's data type + std::string ior; + { + CORBA::String_var iorString = GetORB()->object_to_string( SMESH_Gen::_this() ); + ior = std::string( iorString.in() ); // IOR of this SMESH engine + } // Find study component which corresponds to this SMESH engine SALOMEDS::SComponent_wrap father; @@ -558,12 +561,14 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent() SALOMEDS::SComponent_wrap f_i = citer->Value(); CORBA::String_var ior_i; bool ok = f_i->ComponentIOR(ior_i.out()); - if ( ok && compDataType == f_i->ComponentDataType() && ior == ior_i.in()) { + CORBA::String_var cdt(f_i->ComponentDataType()); + if ( ok && strcmp( compDataType.in(), cdt.in() ) == 0 && ior == ior_i.in()) + { father = f_i; break; } } - + if ( !CORBA::is_nil( father ) ) { // check that the component is added to the use case browser if ( !useCaseBuilder->IsUseCaseNode( father ) ) { @@ -579,14 +584,14 @@ SALOMEDS::SComponent_ptr SMESH_Gen_i::PublishComponent() if ( CORBA::is_nil( aCat ) ) return father._retn(); - SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( compDataType.c_str() ); + SALOME_ModuleCatalog::Acomponent_var aComp = aCat->GetComponent( compDataType.in() ); if ( CORBA::is_nil( aComp ) ) return father._retn(); SALOMEDS::GenericAttribute_wrap anAttr; SALOMEDS::AttributePixMap_wrap aPixmap; - father = aStudyBuilder->NewComponent( compDataType.c_str() ); + father = aStudyBuilder->NewComponent( compDataType.in() ); aStudyBuilder->DefineComponentInstance( father, SMESH_Gen::_this() ); anAttr = aStudyBuilder->FindOrCreateAttribute( father, "AttributePixMap" ); aPixmap = anAttr;