]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Fixed bug in method GetUseCaseIterator, now there is no crash when an Iterator is...
authorsrn <srn@opencascade.com>
Wed, 13 Dec 2006 11:51:10 +0000 (11:51 +0000)
committersrn <srn@opencascade.com>
Wed, 13 Dec 2006 11:51:10 +0000 (11:51 +0000)
src/SALOMEDS/SALOMEDS_UseCaseBuilder.cxx

index d429516f359dd487ae8d15f21f4f9ff042298f7a..c89cb6ff3fc5882871ec89cfa3b34ee1a38c616e 100644 (file)
@@ -200,11 +200,19 @@ _PTR(SObject) SALOMEDS_UseCaseBuilder::AddUseCase(const std::string& theName)
 _PTR(UseCaseIterator) SALOMEDS_UseCaseBuilder::GetUseCaseIterator(const _PTR(SObject)& theObject) 
 {
   SALOMEDS_UseCaseIterator* it = NULL;
-  SALOMEDS_SObject* obj = dynamic_cast<SALOMEDS_SObject*>(theObject.get());
+  SALOMEDS_SObject* obj = (theObject)?dynamic_cast<SALOMEDS_SObject*>(theObject.get()):NULL;
   if (_isLocal) {
     SALOMEDS::Locker lock;
-    it = new SALOMEDS_UseCaseIterator(_local_impl->GetUseCaseIterator(obj->GetLocalImpl()));
+    if(obj)
+      it = new SALOMEDS_UseCaseIterator(_local_impl->GetUseCaseIterator(obj->GetLocalImpl()));
+    else
+      it = new SALOMEDS_UseCaseIterator(_local_impl->GetUseCaseIterator(NULL));
+  }
+  else {
+    if(obj)
+      it = new SALOMEDS_UseCaseIterator(_corba_impl->GetUseCaseIterator(obj->GetCORBAImpl()));
+    else
+      it = new SALOMEDS_UseCaseIterator(_corba_impl->GetUseCaseIterator(SALOMEDS::SObject::_nil()));
   }
-  else it = new SALOMEDS_UseCaseIterator(_corba_impl->GetUseCaseIterator(obj->GetCORBAImpl()));
   return _PTR(UseCaseIterator)(it);
 }