Salome HOME
Copyright update: 2016
[modules/smesh.git] / src / StdMeshers_I / StdMeshers_ImportSource2D_i.cxx
index 35f9d3fb057df4c56780dba5ef81881e609b3ad2..f8d31a414ded0b93efc4c899b9fcdb97048fc46f 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2016  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
@@ -6,7 +6,7 @@
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -90,25 +90,26 @@ void StdMeshers_ImportSource2D_i::SetSourceFaces(const SMESH::ListOfGroups& grou
     std::vector<SMESH_Group*> smesh_groups;
     std::vector<string> entries;
     SALOMEDS::Study_var study = SMESH_Gen_i::GetSMESHGen()->GetCurrentStudy();
-    for ( int i = 0; i < groups.length(); ++i )
+    for ( CORBA::ULong i = 0; i < groups.length(); ++i )
       if ( SMESH_GroupBase_i* gp_i = SMESH::DownCast<SMESH_GroupBase_i*>( groups[i] ))
       {
         if ( gp_i->GetType() != SMESH::FACE )
           THROW_SALOME_CORBA_EXCEPTION("Wrong group type", SALOME::BAD_PARAM);
         smesh_groups.push_back( gp_i->GetSmeshGroup() );
 
-        SALOMEDS::SObject_var so = SMESH_Gen_i::GetSMESHGen()->ObjectToSObject(study, groups[i]);
+        SALOMEDS::SObject_var so = SMESH_Gen_i::ObjectToSObject(study, groups[i]);
         if ( !so->_is_nil())
         {
           CORBA::String_var entry = so->GetID();
           entries.push_back( entry.in() );
+          so->UnRegister();
         }
       }
     this->GetImpl()->SetGroups( smesh_groups );
 
     _groupEntries = new SMESH::string_array;
     _groupEntries->length( entries.size ());
-    for ( int i = 0; i < entries.size(); ++i )
+    for ( size_t i = 0; i < entries.size(); ++i )
       _groupEntries[i] = entries[i].c_str();
   }
   catch ( SALOME_Exception& S_ex )
@@ -172,16 +173,18 @@ char* StdMeshers_ImportSource2D_i::SaveTo()
   os << " " << _groupEntries->length();
 
   SALOMEDS::Study_var study = SMESH_Gen_i::GetSMESHGen()->GetCurrentStudy();
-  for ( int i = 0; i < _groupEntries->length(); ++i )
+  for ( CORBA::ULong i = 0; i < _groupEntries->length(); ++i )
   {
     // entry
     os << " " << _groupEntries[i];
 
     // id
     SALOMEDS::SObject_var groupSO = study->FindObjectID( _groupEntries[i] );
-    CORBA::Object_var groupObj;
-    if ( !groupSO->_is_nil() )
+    CORBA::Object_var    groupObj;
+    if ( !groupSO->_is_nil() ) {
       groupObj = groupSO->GetObject();
+      groupSO->UnRegister();
+    }
     StdMeshers_ObjRefUlils::SaveToStream( groupObj, os );
   }
 
@@ -207,7 +210,7 @@ void StdMeshers_ImportSource2D_i::LoadFrom( const char* theStream )
   _groupEntries = new SMESH::string_array;
   _groupEntries->length( nbGroups );
   std::string id, entry;
-  for ( int i = 0; i < _groupEntries->length(); ++i )
+  for ( CORBA::ULong i = 0; i < _groupEntries->length(); ++i )
   {
     if ( is >> entry )
       _groupEntries[i] = entry.c_str();