X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSALOMESDS%2FSALOMESDS_AutoRefCountPtr.hxx;h=cdbc5a75bd5c62c7b2bafc93d2e542d4da9a9dc7;hb=2252fa5809de4580de842bf8bfdc36f1644c36ae;hp=e56aba80fe8d5b2c45b9bf0fe95379e345b9fb2d;hpb=718e0abe0126e5e53b3ba41fff1028efcf5bc887;p=modules%2Fkernel.git diff --git a/src/SALOMESDS/SALOMESDS_AutoRefCountPtr.hxx b/src/SALOMESDS/SALOMESDS_AutoRefCountPtr.hxx index e56aba80f..cdbc5a75b 100644 --- a/src/SALOMESDS/SALOMESDS_AutoRefCountPtr.hxx +++ b/src/SALOMESDS/SALOMESDS_AutoRefCountPtr.hxx @@ -34,11 +34,19 @@ namespace SALOMESDS CORBA::Object_var activate() { PortableServer::POA_var poa(getPOA()); - PortableServer::ObjectId_var id(poa->activate_object(this)); + PortableServer::ObjectId_var id; + try + { + id=poa->activate_object(this); + } + catch(PortableServer::POA::ServantAlreadyActive& e) + { + id=poa->servant_to_id(this); + } CORBA::Object_var ret(poa->id_to_reference(id)); return ret; } - + void enforcedRelease() { PortableServer::POA_var poa(getPOA()); @@ -112,6 +120,7 @@ namespace SALOMESDS const T& operator*() const { return *_ptr; } operator T *() { return _ptr; } operator const T *() const { return _ptr; } + bool isNull() const { return _ptr==NULL; } private: void destroyPtr() {