Salome HOME
Fix for the bug IPAL22164: Fatal error during save/load a SMESH study
[modules/kernel.git] / src / SALOMEDSImpl / SALOMEDSImpl_AttributeIOR.cxx
index 3ce91128632e4033810522e689cfc5ffdd485cca..668e1a142a8695878e0e50c99a3147b93c946a4d 100644 (file)
@@ -1,4 +1,4 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 //  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 //  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -19,6 +19,7 @@
 //
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 //  File   : SALOMEDSImpl_AttributeIOR.cxx
 //  Author : Sergey RUIN
 //  Module : SALOME
@@ -26,8 +27,6 @@
 #include "SALOMEDSImpl_AttributeIOR.hxx"
 #include "SALOMEDSImpl_Study.hxx"
 
-using namespace std;
-
 //to disable automatic genericobj management comment the following line
 #define WITHGENERICOBJ
 
@@ -42,16 +41,18 @@ static CORBA::ORB_var getORB()
 
 void IORGenericObjDecref(const std::string& anIOR)
 {
+  if(anIOR=="")return;
   CORBA::Object_var obj;
   SALOME::GenericObj_var gobj;
   try
     {
-       obj = getORB()->string_to_object(anIOR.c_str());
-       gobj = SALOME::GenericObj::_narrow(obj);
-       if(! CORBA::is_nil(gobj) )
-         {
-           gobj->Destroy();
-         }
+      obj = getORB()->string_to_object(anIOR.c_str());
+      if(obj->_non_existent())return;
+      gobj = SALOME::GenericObj::_narrow(obj);
+      if(! CORBA::is_nil(gobj) )
+        {
+          gobj->Destroy();
+        }
     }
   catch(const CORBA::Exception& e)
     {
@@ -65,6 +66,7 @@ void IORGenericObjIncref(const std::string& anIOR)
   try
     {
       obj = getORB()->string_to_object(anIOR.c_str());
+      if(obj->_non_existent())return;
       gobj = SALOME::GenericObj::_narrow(obj);
       if(! CORBA::is_nil(gobj) )
         {
@@ -75,6 +77,11 @@ void IORGenericObjIncref(const std::string& anIOR)
     {
     }
 }
+#else
+void IORGenericObjDecref(const std::string& anIOR)
+{}
+void IORGenericObjIncref(const std::string& anIOR)
+{}
 #endif
 
 //=======================================================================
@@ -96,7 +103,7 @@ const std::string& SALOMEDSImpl_AttributeIOR::GetID ()
 //=======================================================================
 
 SALOMEDSImpl_AttributeIOR* SALOMEDSImpl_AttributeIOR::Set (const DF_Label& L,
-                                                          const std::string& S) 
+                                                           const std::string& S) 
 {
   SALOMEDSImpl_AttributeIOR* A = NULL;
   if (!(A=(SALOMEDSImpl_AttributeIOR*)L.FindAttribute(SALOMEDSImpl_AttributeIOR::GetID()))) {