Salome HOME
23336: [CEA 1940] Crash when editing a skin mesh generated by MG-Cleaner
authoreap <eap@opencascade.com>
Mon, 28 Nov 2016 14:06:48 +0000 (17:06 +0300)
committereap <eap@opencascade.com>
Mon, 28 Nov 2016 14:06:48 +0000 (17:06 +0300)
src/SMESH_I/SMESH_Gen_i_1.cxx

index 346150a0bdf20fa0763b5e2e88dfdda5b756d733..74e054d8f79c0bebf9b148045144d5bbc97cae4d 100644 (file)
@@ -325,13 +325,16 @@ static SALOMEDS::SObject_ptr publish(SALOMEDS::Study_ptr   theStudy,
     selAttr->SetSelectable( false );
   }
 
+  if ( !isNewSO )
+    aStudyBuilder->RemoveReference( SO );// remove garbage reference (23336)
+
   // add object to the use case tree
   // (to support tree representation customization and drag-n-drop)
-  if ( isNewSO )
+  if ( isNewSO || !useCaseBuilder->IsUseCaseNode( SO ))
   {
-    if ( !CORBA::is_nil( objAfter ) )
+    if ( !CORBA::is_nil( objAfter ))
       useCaseBuilder->InsertBefore( SO, objAfter );    // insert at given tag
-    else if ( !useCaseBuilder->IsUseCaseNode( SO ) )
+    else if ( !useCaseBuilder->IsUseCaseNode( SO ))
       useCaseBuilder->AppendTo( theFatherObject, SO ); // append to the end of list
   }
   return SO._retn();