]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Fix memory leaks problem
authorvsr <vsr@opencascade.com>
Mon, 21 Sep 2009 11:38:02 +0000 (11:38 +0000)
committervsr <vsr@opencascade.com>
Mon, 21 Sep 2009 11:38:02 +0000 (11:38 +0000)
16 files changed:
src/GenerationGUI/GenerationGUI_FillingDlg.cxx
src/GenerationGUI/GenerationGUI_PipeDlg.cxx
src/GenerationGUI/GenerationGUI_PrismDlg.cxx
src/GenerationGUI/GenerationGUI_RevolDlg.cxx
src/RepairGUI/RepairGUI_ChangeOrientationDlg.cxx
src/RepairGUI/RepairGUI_CloseContourDlg.cxx
src/RepairGUI/RepairGUI_DivideEdgeDlg.cxx
src/RepairGUI/RepairGUI_FreeBoundDlg.cxx
src/RepairGUI/RepairGUI_FreeFacesDlg.cxx
src/RepairGUI/RepairGUI_GlueDlg.cxx
src/RepairGUI/RepairGUI_RemoveExtraEdgesDlg.cxx
src/RepairGUI/RepairGUI_RemoveHolesDlg.cxx
src/RepairGUI/RepairGUI_RemoveIntWiresDlg.cxx
src/RepairGUI/RepairGUI_SewingDlg.cxx
src/RepairGUI/RepairGUI_ShapeProcessDlg.cxx
src/RepairGUI/RepairGUI_SuppressFacesDlg.cxx

index 986f6286464fac7d012d786e737051834db3d140..fa200559a791cc4be339e477b96403b8f869d2d5 100644 (file)
@@ -355,10 +355,9 @@ bool GenerationGUI_FillingDlg::isValid( QString& msg )
 //=================================================================================
 bool GenerationGUI_FillingDlg::execute( ObjectList& objects )
 {
-  GEOM::GEOM_Object_var anObj;
-
-  anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation() )->MakeFilling(
-    myCompound, myMinDeg, myMaxDeg, myTol2D, myTol3D, myNbIter, myIsApprox );
+  GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation());
+  GEOM::GEOM_Object_var anObj = anOper->MakeFilling( myCompound, myMinDeg, myMaxDeg, 
+                                                    myTol2D, myTol3D, myNbIter, myIsApprox );
   if ( !anObj->_is_nil() )
   {
     if ( !IsPreview() )
@@ -369,7 +368,7 @@ bool GenerationGUI_FillingDlg::execute( ObjectList& objects )
       aParameters << GroupPoints->SpinBox3->text();
       aParameters << GroupPoints->SpinBox4->text();
       aParameters << GroupPoints->SpinBox5->text();
-      anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+      anObj->SetParameters(aParameters.join(":").toLatin1().constData());
     }
     objects.push_back( anObj._retn() );
   }
index 78d7abfcef1781a149bfb74e4e29f2fd3dc65519..c6248a1e86ad16317f000fea4d61722ab2bb48d2 100644 (file)
@@ -475,13 +475,14 @@ bool GenerationGUI_PipeDlg::execute (ObjectList& objects)
 {
   GEOM::GEOM_Object_var anObj;
 
+  GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation());
+
   switch ( getConstructorId() ) {
   case 0 :
-    anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->MakePipe(myBase, myPath);
+    anObj = anOper->MakePipe(myBase, myPath);
     break;
   case 1 :
-    anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-      MakePipeBiNormalAlongVector(myBase, myPath, myVec);
+    anObj = anOper->MakePipeBiNormalAlongVector(myBase, myPath, myVec);
     break;
   }
 
index 9d4914dfec821122af3bfa015f6b7f24679bf42f..b540d1979ca8e6e65190afba8848509cff6d6feb 100644 (file)
@@ -653,32 +653,30 @@ bool GenerationGUI_PrismDlg::execute (ObjectList& objects)
   QStringList aParameters;
   GEOM::GEOM_Object_var anObj;
 
+  GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation());
+
   switch (getConstructorId()) {
   case 0:
     if (!myBothway) {
-      anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-        MakePrismVecH(myBase, myVec, getHeight());
+      anObj = anOper->MakePrismVecH(myBase, myVec, getHeight());
     }
     else {
-      anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-        MakePrismVecH2Ways(myBase, myVec, getHeight());
+      anObj = anOper->MakePrismVecH2Ways(myBase, myVec, getHeight());
     }
 
     if (!anObj->_is_nil() && !IsPreview())
     {
       aParameters << GroupPoints->SpinBox_DX->text();
-      anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+      anObj->SetParameters(aParameters.join(":").toLatin1().constData());
     }
 
     break;
   case 1:
     if (!myBothway2) {
-      anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-        MakePrismTwoPnt(myBase, myPoint1, myPoint2);
+      anObj = anOper->MakePrismTwoPnt(myBase, myPoint1, myPoint2);
     }
     else {
-      anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-        MakePrismTwoPnt2Ways(myBase, myPoint1, myPoint2);
+      anObj = anOper->MakePrismTwoPnt2Ways(myBase, myPoint1, myPoint2);
     }
     break;
   case 2:
@@ -687,12 +685,10 @@ bool GenerationGUI_PrismDlg::execute (ObjectList& objects)
     double dz = GroupPoints3->SpinBox_DZ->value();
 
     if (!myBothway3) {
-      anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-        MakePrismDXDYDZ(myBase, dx, dy, dz);
+      anObj = anOper->MakePrismDXDYDZ(myBase, dx, dy, dz);
     }
     else {
-      anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-        MakePrismDXDYDZ2Ways(myBase, dx, dy, dz);
+      anObj = anOper->MakePrismDXDYDZ2Ways(myBase, dx, dy, dz);
     }
 
     if (!anObj->_is_nil() && !IsPreview())
@@ -700,7 +696,7 @@ bool GenerationGUI_PrismDlg::execute (ObjectList& objects)
       aParameters << GroupPoints3->SpinBox_DX->text();
       aParameters << GroupPoints3->SpinBox_DY->text();
       aParameters << GroupPoints3->SpinBox_DZ->text();
-      anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+      anObj->SetParameters(aParameters.join(":").toLatin1().constData());
     }
 
     break;
index 99d8ba14e5464a8a836db3c1a8be9dcd027aa64a..0004ec356cb288500efb1c4e5bcbb2f1e13eb968 100644 (file)
@@ -405,13 +405,13 @@ bool GenerationGUI_RevolDlg::execute (ObjectList& objects)
 {
   GEOM::GEOM_Object_var anObj;
 
+  GEOM::GEOM_I3DPrimOperations_var anOper = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation());
+
   if (!myBothway) {
-    anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-      MakeRevolutionAxisAngle(myBase, myAxis, getAngle() * PI180);
+    anObj = anOper->MakeRevolutionAxisAngle(myBase, myAxis, getAngle() * PI180);
   }
   else {
-    anObj = GEOM::GEOM_I3DPrimOperations::_narrow(getOperation())->
-      MakeRevolutionAxisAngle2Ways(myBase, myAxis, getAngle() * PI180);
+    anObj = anOper->MakeRevolutionAxisAngle2Ways(myBase, myAxis, getAngle() * PI180);
   }
 
   if (!anObj->_is_nil())
@@ -420,7 +420,7 @@ bool GenerationGUI_RevolDlg::execute (ObjectList& objects)
     {
       QStringList aParameters;
       aParameters << GroupPoints->SpinBox_DX->text();
-      anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+      anObj->SetParameters(aParameters.join(":").toLatin1().constData());
     }
     objects.push_back(anObj._retn());
   }
index 4d6e6aeefa8faf5beed47659d6af5b02691621ee..93fd613a9398ee8264dcc18a6ffc05d73be35890 100644 (file)
@@ -269,11 +269,12 @@ bool RepairGUI_ChangeOrientationDlg::execute( ObjectList& objects )
   bool toCreateCopy = GroupPoints->CheckButton1->isChecked();
 
   GEOM::GEOM_Object_var anObj;
+  GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow( getOperation() );
   if ( toCreateCopy ) {
-    anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->ChangeOrientationCopy( myObject );
+    anObj = anOper->ChangeOrientationCopy( myObject );
   }
   else {
-    anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->ChangeOrientation( myObject );
+    anObj = anOper->ChangeOrientation( myObject );
   }
 
   if ( !anObj->_is_nil() )
index a65cd69f7fc6c2268d98cebd94746269e9d938e6..b22a5520021c94261c242ad65dc659401ada1747 100644 (file)
@@ -319,8 +319,8 @@ bool RepairGUI_CloseContourDlg::isValid (QString&)
 //=================================================================================
 bool RepairGUI_CloseContourDlg::execute (ObjectList& objects)
 {
-  GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->
-    CloseContour(myObject, myWiresInd, getIsByVertex());
+  GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow(getOperation());
+  GEOM::GEOM_Object_var anObj = anOper->CloseContour(myObject, myWiresInd, getIsByVertex());
 
   bool aResult = !anObj->_is_nil();
   if (aResult)
index 2f3d7a58235d6d2f2fbcc507bc84d71d1a75df57..142e5b3b774696bf5a016c8400c303c70d071e9a 100644 (file)
@@ -362,8 +362,8 @@ bool RepairGUI_DivideEdgeDlg::isValid( QString& msg )
 //=================================================================================
 bool RepairGUI_DivideEdgeDlg::execute( ObjectList& objects )
 {
-  GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->DivideEdge
-    ( myObject, myIndex, myValEdt->value(), getIsByParameter() );
+  GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow( getOperation() );
+  GEOM::GEOM_Object_var anObj = anOper->DivideEdge( myObject, myIndex, myValEdt->value(), getIsByParameter() );
   bool aResult = !anObj->_is_nil();
   if ( aResult )
   {
@@ -373,7 +373,7 @@ bool RepairGUI_DivideEdgeDlg::execute( ObjectList& objects )
       aParameters << "";
       aParameters << myValEdt->text();
       aParameters << "";
-      anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+      anObj->SetParameters(aParameters.join(":").toLatin1().constData());
     }
     objects.push_back( anObj._retn() );
   }
index f20e0413021165c2abbc4bb0fb3f684bd6a7aed3..77aee17da7ed63a78d4fbff8e5f236e4089d4903 100644 (file)
@@ -293,8 +293,8 @@ bool RepairGUI_FreeBoundDlg::execute( ObjectList& objects )
 
   GEOM::ListOfGO_var aClosed, anOpen;
 
-  bool result = GEOM::GEOM_IHealingOperations::_narrow(
-    getOperation() )->GetFreeBoundary( myObj, aClosed, anOpen );
+  GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow( getOperation() );
+  bool result = anOper->GetFreeBoundary( myObj, aClosed, anOpen );
 
   if ( result ) {
     myNbClosed = aClosed->length();
index a4319e05a2cfeaebe3661962c03b95c821d515f6..7f97162a7d7291c9c55d2aba921e1fe99b699a23 100644 (file)
@@ -307,8 +307,8 @@ bool RepairGUI_FreeFacesDlg::isValid( QString& )
 bool RepairGUI_FreeFacesDlg::execute( ObjectList& objects )
 {
   bool aResult = false;
-  GEOM::ListOfLong_var aFaceLst = 
-    GEOM::GEOM_IShapesOperations::_narrow( getOperation() )->GetFreeFacesIDs( myObj );
+  GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow( getOperation() );
+  GEOM::ListOfLong_var aFaceLst = anOper->GetFreeFacesIDs( myObj );
   TopoDS_Shape aSelShape;
   TopoDS_Shape aFace; 
   TopTools_IndexedMapOfShape anIndices;
index 3425fc433131600aab3db40ecf76b1ad0af2c362..9c6bdd49e23a025a121b2119935069ee938ef814 100644 (file)
@@ -407,17 +407,17 @@ bool RepairGUI_GlueDlg::execute( ObjectList& objects )
   bool aResult = false;
   objects.clear();
 
+  GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow( getOperation() );
   switch ( getConstructorId() ) {
   case 0:
     {
-      GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow
-        ( getOperation() )->MakeGlueFaces( myObject, myTolEdt->value(), true );
+      GEOM::GEOM_Object_var anObj = anOper->MakeGlueFaces( myObject, myTolEdt->value(), true );
       aResult = !anObj->_is_nil();
       if ( aResult && !IsPreview() )
       {
        QStringList aParameters;
        aParameters << myTolEdt->text();
-       anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+        anObj->SetParameters(aParameters.join(":").toLatin1().constData());
 
         objects.push_back( anObj._retn() );
       }
@@ -461,8 +461,7 @@ bool RepairGUI_GlueDlg::execute( ObjectList& objects )
       ObjectList::iterator anIter3 = toGlue.begin();
       for ( int i = 0; anIter3 != toGlue.end(); ++anIter3, ++i )
         aListForGlue[ i ] = *anIter3;
-      GEOM::GEOM_Object_var anObj = GEOM::GEOM_IShapesOperations::_narrow
-        ( getOperation() )->MakeGlueFacesByList( myObject, myTolEdt2->value(), aListForGlue, true );
+      GEOM::GEOM_Object_var anObj = anOper->MakeGlueFacesByList( myObject, myTolEdt2->value(), aListForGlue, true );
 
       aResult = !anObj->_is_nil();
 
@@ -472,7 +471,7 @@ bool RepairGUI_GlueDlg::execute( ObjectList& objects )
        {
          QStringList aParameters;
          aParameters << myTolEdt2->text();
-         anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+          anObj->SetParameters(aParameters.join(":").toLatin1().constData());
        }
         objects.push_back( anObj._retn() );
       }
@@ -607,12 +606,11 @@ bool RepairGUI_GlueDlg::onAcceptLocal()
         }
 
         // JFA 28.12.2004 BEGIN // To enable warnings
-        if ( !getOperation()->_is_nil() ) {
-          if ( !getOperation()->IsDone() ) {
-            wc.suspend();
-           QString msgw = QObject::tr( getOperation()->GetErrorCode() );
-            SUIT_MessageBox::warning( this, tr( "WRN_WARNING" ), msgw, tr( "BUT_OK" ) );
-          }
+       GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow( getOperation() );
+        if ( !CORBA::is_nil(anOper) && !anOper->IsDone() ) {
+         wc.suspend();
+         QString msgw = QObject::tr( anOper->GetErrorCode() );
+         SUIT_MessageBox::warning( this, tr( "WRN_WARNING" ), msgw, tr( "BUT_OK" ) );
         }
         // JFA 28.12.2004 END
       }
@@ -648,8 +646,8 @@ void RepairGUI_GlueDlg::onDetect()
   buttonApply()->setEnabled( false );
   globalSelection( GEOM_ALLSHAPES );
 
-  GEOM::ListOfGO_var aList = GEOM::GEOM_IShapesOperations::_narrow
-    ( getOperation() )->GetGlueFaces( myObject, myTolEdt2->value() );
+  GEOM::GEOM_IShapesOperations_var anOper = GEOM::GEOM_IShapesOperations::_narrow( getOperation() );
+  GEOM::ListOfGO_var aList = anOper->GetGlueFaces( myObject, myTolEdt2->value() );
   
   for ( int i = 0, n = aList->length(); i < n; i++ ) 
     myTmpObjs.push_back(GEOM::GEOM_Object::_duplicate(aList[i]));
index 25fceb12f45c0b1083e07aec07312ca2121a74b3..16c05ad481cd0a0eac364c86413e6c30349022fb 100644 (file)
@@ -288,8 +288,8 @@ bool RepairGUI_RemoveExtraEdgesDlg::execute( ObjectList& objects )
   int nbFacesOptimum = -1; // -1 means do not union faces
   if (GroupPoints->CheckButton1->isChecked())
     nbFacesOptimum = 0; // 0 means union all faces, that possible
-  anObj = GEOM::GEOM_IBlocksOperations::_narrow(getOperation())->RemoveExtraEdges
-    (myObject, nbFacesOptimum);
+  GEOM::GEOM_IBlocksOperations_var anOper = GEOM::GEOM_IBlocksOperations::_narrow(getOperation());
+  anObj = anOper->RemoveExtraEdges(myObject, nbFacesOptimum);
 
   if (!anObj->_is_nil())
     objects.push_back(anObj._retn());
index cc90a25cd9a53a55177ac4dfe22a3acd28ed0a8c..5ab5ce7cbc1ea9551fbf322bc7cbd9171fe064a7 100644 (file)
@@ -329,8 +329,8 @@ bool RepairGUI_RemoveHolesDlg::execute (ObjectList& objects)
     // highlight them (add to objects), display message dialog
     GEOM::ListOfGO_var aClosed, anOpen;
 
-    aResult = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->
-      GetFreeBoundary(myObject, aClosed, anOpen);
+    GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow(getOperation());
+    aResult = anOper->GetFreeBoundary(myObject, aClosed, anOpen);
 
     if (aResult) {
       myClosed = aClosed->length();
@@ -345,8 +345,8 @@ bool RepairGUI_RemoveHolesDlg::execute (ObjectList& objects)
       myClosed = -1;
   }
   else {
-    GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->
-      FillHoles(myObject, myWiresInd);
+    GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow(getOperation());
+    GEOM::GEOM_Object_var anObj = anOper->FillHoles(myObject, myWiresInd);
     aResult = !anObj->_is_nil();
     if (aResult)
       objects.push_back(anObj._retn());
index 90b89b872a52c4ce6a12f21a080a1c319ff770fa..3cdf23de69a4468542e5222612607e2fbe616b9c 100644 (file)
@@ -306,8 +306,8 @@ bool RepairGUI_RemoveIntWiresDlg::isValid (QString&)
 //=================================================================================
 bool RepairGUI_RemoveIntWiresDlg::execute (ObjectList& objects)
 {
-  GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow(getOperation())->
-    RemoveIntWires(myObject, myWiresInd);
+  GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow(getOperation());
+  GEOM::GEOM_Object_var anObj = anOper->RemoveIntWires(myObject, myWiresInd);
 
   bool aResult = !anObj->_is_nil();
   if (aResult)
index a709997e5041b86385b449eab82aa7cfe1be27c8..2b0d66551476afea4de14de708e5ebab8a637a80 100644 (file)
@@ -278,10 +278,12 @@ bool RepairGUI_SewingDlg::isValid( QString& msg )
 bool RepairGUI_SewingDlg::execute( ObjectList& objects )
 {
   bool aResult = false;
+  GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow( getOperation() );
+
   if ( IsPreview() ) { // called from onDetect(): detect free boundary edges, highlight them (add to objects), display message dialog
     GEOM::ListOfGO_var aClosed, anOpen;
 
-    aResult = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->GetFreeBoundary( myObject, aClosed, anOpen );
+    aResult = anOper->GetFreeBoundary( myObject, aClosed, anOpen );
 
     if ( aResult ) {
       myClosed = aClosed->length();
@@ -296,7 +298,7 @@ bool RepairGUI_SewingDlg::execute( ObjectList& objects )
       myClosed = -1;
   }
   else {
-    GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->Sew( myObject, myTolEdt->value() );
+    GEOM::GEOM_Object_var anObj = anOper->Sew( myObject, myTolEdt->value() );
     aResult = !anObj->_is_nil();
     if ( aResult )
     {
@@ -304,7 +306,7 @@ bool RepairGUI_SewingDlg::execute( ObjectList& objects )
       {
        QStringList aParameters;
        aParameters << myTolEdt->text();
-       anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+        anObj->SetParameters(aParameters.join(":").toLatin1().constData());
       }
       objects.push_back( anObj._retn() );
     }
index 1c4761341e4bef38bb5978aa629f3fcb7f2e1b8c..570df5381d9ce00ae90398e3c9889ab718644744 100755 (executable)
@@ -621,8 +621,8 @@ bool RepairGUI_ShapeProcessDlg::execute( ObjectList& objects )
   QStringList anErrorObjNames;
   for ( int i = 0; i < myObjects->length(); i++ ) {
     GEOM::GEOM_Object_var obj = myObjects[i];
-    GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->
-      ProcessShape( obj, anOperators, aParams, aValues );
+    GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow( getOperation() );
+    GEOM::GEOM_Object_var anObj = anOper->ProcessShape( obj, anOperators, aParams, aValues );
     if ( anObj->_is_nil() )
       anErrorObjNames << GEOMBase::GetName( obj );
     else
@@ -638,7 +638,7 @@ bool RepairGUI_ShapeProcessDlg::execute( ObjectList& objects )
          aParameters << QString( aParams[i] );
 
        aParameters << getTexts( aParams );
-       anObj->SetParameters(GeometryGUI::JoinObjectParameters(aParameters));
+        anObj->SetParameters(aParameters.join(":").toLatin1().constData());
       }
       objects.push_back( anObj._retn() );
     }
index 6149e963fa2729cb7ab42b3dbd60249c904d3d26..dea6227e0f032795417deb29b35cce411e371c45 100644 (file)
@@ -295,7 +295,8 @@ bool RepairGUI_SuppressFacesDlg::execute( ObjectList& objects )
     GEOM::GEOM_Object_var obj = myObjects[i];
     GEOM::short_array faces = myFaces[i];
     //MESSAGE(">>>> Dlg, passing faces.. len = " << faces.length());
-    GEOM::GEOM_Object_var anObj = GEOM::GEOM_IHealingOperations::_narrow( getOperation() )->SuppressFaces( obj, faces );
+    GEOM::GEOM_IHealingOperations_var anOper = GEOM::GEOM_IHealingOperations::_narrow( getOperation() );
+    GEOM::GEOM_Object_var anObj = anOper->SuppressFaces( obj, faces );
     if ( anObj->_is_nil() )
       anErrorObjNames << GEOMBase::GetName( obj );
     else