]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
0022832: EDF GEOM: Bug with curve construction
authorvsr <vsr@opencascade.com>
Thu, 18 Dec 2014 15:11:55 +0000 (18:11 +0300)
committervsr <vsr@opencascade.com>
Thu, 18 Dec 2014 15:11:55 +0000 (18:11 +0300)
Additional commit: fix memory leak plus small redesign

src/GEOM_I/GEOM_Object_i.cc

index dcaf20289120957a8a933bb96bf9464f7d70c6a5..08f2d1afdc783a5bdc40486f5df4d8515d4c49da 100644 (file)
@@ -366,14 +366,17 @@ bool GEOM_Object_i::IsShape()
 
 bool GEOM_Object_i::IsSame(GEOM::GEOM_BaseObject_ptr other)
 {
-  GEOM::GEOM_Object_ptr shapePtr = GEOM::GEOM_Object::_narrow( other );
-  if ( CORBA::is_nil( shapePtr ) )
-    return false;
-  TopoDS_Shape thisShape  = _impl->GetValue();
-  TopoDS_Shape otherShape;
-  Handle(GEOM_Object) otherObject = Handle(GEOM_Object)::DownCast
-    ( GEOM_Engine::GetEngine()->GetObject( shapePtr->GetStudyID(), shapePtr->GetEntry(), false ));
-  if ( !otherObject.IsNull() )
-    otherShape = otherObject->GetValue();
-  return thisShape.IsSame( otherShape );
+  bool result = false;
+
+  GEOM::GEOM_Object_var shapePtr = GEOM::GEOM_Object::_narrow( other );
+  if ( !CORBA::is_nil( shapePtr ) ) {
+    Handle(GEOM_Object) otherObject = Handle(GEOM_Object)::DownCast
+      ( GEOM_Engine::GetEngine()->GetObject( shapePtr->GetStudyID(), shapePtr->GetEntry(), false ));
+    if ( !otherObject.IsNull() ) {
+      TopoDS_Shape thisShape  = _impl->GetValue();
+      TopoDS_Shape otherShape = otherObject->GetValue();
+      result = !thisShape.IsNull() && !otherShape.IsNull() && thisShape.IsSame( otherShape );
+    }
+  }
+  return result;
 }