]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
NPAL15230: Too much memory allocation.
authorjfa <jfa@opencascade.com>
Mon, 19 Mar 2007 12:26:03 +0000 (12:26 +0000)
committerjfa <jfa@opencascade.com>
Mon, 19 Mar 2007 12:26:03 +0000 (12:26 +0000)
src/GEOMAlgo/GEOMAlgo_Builder.cdl
src/GEOMAlgo/GEOMAlgo_Builder.cxx
src/GEOMAlgo/GEOMAlgo_Builder.hxx

index 42eb89e86e5e1c94ceb9afcede91548f84f63650..967bc05f99f0483c10280abfcf7957e62b388e3f 100755 (executable)
@@ -99,6 +99,13 @@ is
     -- 
     --    protected methods  
     --  
+    -- 
+    PerformInternal(me:out; 
+       theDSF: DSFiller from NMTTools) 
+       ---Purpose:  Performs calculations using prepared DSFiller 
+       --           object theDSF               
+       is protected; 
+    --
     PrepareHistory (me:out) 
        ---Purpose:  Prepare information for history support  
        is redefined protected;  
@@ -241,7 +248,7 @@ fields
     mySameDomainShapes: IndexedDataMapOfShapeShape from TopTools is protected;
     --  solids 
     myDraftSolids     : IndexedDataMapOfShapeShape from TopTools is protected; 
-    
+    myEntryPoint      : Integer from Standard is protected;    
     --     
 end Builder;
 
index 0ab651cde2cd55d8aa91a3673f3e02bcd76b21ed..284cd7b10b837f5bcbed6a39918053408c1239ec 100755 (executable)
@@ -52,6 +52,7 @@
 {
   myNbTypes=9;
   myDSFiller=NULL;
+  myEntryPoint=0; // Entry point through PerformWithFiller ()
 }
 //=======================================================================
 //function : ~
 //=======================================================================
   GEOMAlgo_Builder::~GEOMAlgo_Builder()
 {
+  if (myEntryPoint==1) {
+    if (myDSFiller) {
+      delete myDSFiller;
+      myDSFiller=NULL;
+    }
+  }
 }
 //=======================================================================
 //function : AddCompound
     aBB.Add(aCS, aS);
   }
   //
+  if (myDSFiller) {
+    delete myDSFiller;
+    myDSFiller=NULL;
+  }
   NMTTools_DSFiller* pDSF=new NMTTools_DSFiller;
   //
   pDSF->SetCompositeShape(aCS);
   pDSF->Perform();
   //
-  PerformWithFiller(*pDSF);
+  myEntryPoint=1;
+  PerformInternal(*pDSF);
 }
 //=======================================================================
 //function : PerformWithFiller
 //purpose  : 
 //=======================================================================
   void GEOMAlgo_Builder::PerformWithFiller(const NMTTools_DSFiller& theDSF)
+{
+  myEntryPoint=0;
+  //
+  PerformInternal(theDSF);
+}
+//=======================================================================
+//function : PerformInternal
+//purpose  : 
+//=======================================================================
+  void GEOMAlgo_Builder::PerformInternal(const NMTTools_DSFiller& theDSF)
 {
   myErrorStatus=0;
   //
index b6bc2e9e111458fc42d36b681266f166d8174ae2..2f38d77fbd305be48ea31024ed23a042d91d2cff 100644 (file)
@@ -137,6 +137,10 @@ protected:
  // Methods PROTECTED
  // 
 
+//!  Performs calculations using prepared DSFiller <br>
+//!           object theDSF <br>
+Standard_EXPORT   void PerformInternal(const NMTTools_DSFiller& theDSF) ;
+
 //!  Prepare information for history support <br>
 Standard_EXPORT virtual  void PrepareHistory() ;
 
@@ -220,6 +224,7 @@ TopTools_IndexedDataMapOfShapeListOfShape myInParts;
 BRepAlgo_Image mySplitFaces;
 TopTools_IndexedDataMapOfShapeShape mySameDomainShapes;
 TopTools_IndexedDataMapOfShapeShape myDraftSolids;
+Standard_Integer myEntryPoint;
 
 
 private: