Revision: 56968
          http://sourceforge.net/p/brlcad/code/56968
Author:   n_reed
Date:     2013-08-19 19:19:46 +0000 (Mon, 19 Aug 2013)
Log Message:
-----------
address some step-g related leaks identified by valgrind

Modified Paths:
--------------
    brlcad/trunk/src/conv/step/OpenNurbsInterfaces.cpp
    brlcad/trunk/src/conv/step/STEPWrapper.cpp
    brlcad/trunk/src/conv/step/Surface.cpp
    brlcad/trunk/src/conv/step/Surface.h
    brlcad/trunk/src/libbrep/PullbackCurve.cpp
    brlcad/trunk/src/other/stepcode/src/clutils/dirobj.cc

Modified: brlcad/trunk/src/conv/step/OpenNurbsInterfaces.cpp
===================================================================
--- brlcad/trunk/src/conv/step/OpenNurbsInterfaces.cpp  2013-08-19 18:58:18 UTC 
(rev 56967)
+++ brlcad/trunk/src/conv/step/OpenNurbsInterfaces.cpp  2013-08-19 19:19:46 UTC 
(rev 56968)
@@ -962,6 +962,7 @@
     }
 
     face_geometry->SetCurveBounds(bb);
+    delete bb;
 
     if (!face_geometry->LoadONBrep(brep)) {
        std::cerr << "Error: " << entityname << "::LoadONBrep() - Error loading 
openNURBS brep." << std::endl;
@@ -1611,6 +1612,17 @@
        cs++;
     }
 
+    while (!curve_pullback_samples.empty()) {
+       PBCData *data = curve_pullback_samples.front();
+       while (!data->segments.empty()) {
+           delete data->segments.front();
+           data->segments.pop_front();
+       }
+       delete data;
+       curve_pullback_samples.pop_front();
+    }
+    delete st;
+
     return true;
 }
 

Modified: brlcad/trunk/src/conv/step/STEPWrapper.cpp
===================================================================
--- brlcad/trunk/src/conv/step/STEPWrapper.cpp  2013-08-19 18:58:18 UTC (rev 
56967)
+++ brlcad/trunk/src/conv/step/STEPWrapper.cpp  2013-08-19 19:19:46 UTC (rev 
56968)
@@ -48,11 +48,10 @@
 #include "ContextDependentShapeRepresentation.h"
 
 STEPWrapper::STEPWrapper()
+    : registry(NULL), sfile(NULL), dotg(NULL)
 {
-    instance_list = new InstMgr();
-    registry = NULL;
-    sfile = NULL;
-    dotg = NULL;
+    int ownsInstanceMemory = 1;
+    instance_list = new InstMgr(ownsInstanceMemory);
 }
 
 

Modified: brlcad/trunk/src/conv/step/Surface.cpp
===================================================================
--- brlcad/trunk/src/conv/step/Surface.cpp      2013-08-19 18:58:18 UTC (rev 
56967)
+++ brlcad/trunk/src/conv/step/Surface.cpp      2013-08-19 19:19:46 UTC (rev 
56968)
@@ -32,12 +32,14 @@
 string Surface::entityname = Factory::RegisterClass(ENTITYNAME, 
(FactoryMethod)Surface::Create);
 
 Surface::Surface()
+    : trim_curve_3d_bbox(NULL)
 {
     step = NULL;
     id = 0;
 }
 
 Surface::Surface(STEPWrapper *sw, int step_id)
+    : trim_curve_3d_bbox(NULL)
 {
     step = sw;
     id = step_id;
@@ -45,6 +47,7 @@
 
 Surface::~Surface()
 {
+    delete trim_curve_3d_bbox;
 }
 
 bool

Modified: brlcad/trunk/src/conv/step/Surface.h
===================================================================
--- brlcad/trunk/src/conv/step/Surface.h        2013-08-19 18:58:18 UTC (rev 
56967)
+++ brlcad/trunk/src/conv/step/Surface.h        2013-08-19 19:19:46 UTC (rev 
56968)
@@ -47,8 +47,8 @@
     Surface(STEPWrapper *sw, int step_id);
     bool Load(STEPWrapper *sw, SDAI_Application_instance *sse);
     virtual void Print(int level);
-    void SetCurveBounds(ON_BoundingBox *tcbb) {
-       trim_curve_3d_bbox = tcbb;
+    void SetCurveBounds(const ON_BoundingBox *tcbb) {
+       trim_curve_3d_bbox = new ON_BoundingBox(*tcbb);
     };
 
     //static methods

Modified: brlcad/trunk/src/libbrep/PullbackCurve.cpp
===================================================================
--- brlcad/trunk/src/libbrep/PullbackCurve.cpp  2013-08-19 18:58:18 UTC (rev 
56967)
+++ brlcad/trunk/src/libbrep/PullbackCurve.cpp  2013-08-19 19:19:46 UTC (rev 
56968)
@@ -1194,18 +1194,21 @@
                 double tolerance,
                 double flatness)
 {
+    const ON_Surface *surf = NULL;
+
+    if (!surfacetree)
+       return NULL;
+
+    surf = ((brlcad::SurfaceTree *)surfacetree)->getSurface();
+    if (!surf)
+       return NULL;
+
     PBCData *data = new PBCData;
     data->tolerance = tolerance;
     data->flatness = flatness;
     data->curve = curve;
     data->surftree = (brlcad::SurfaceTree*)surfacetree;
-    if (!data->surftree)
-       return NULL;
 
-    const ON_Surface *surf = data->surftree->getSurface();
-    if (!surf)
-       return NULL;
-
     double tmin, tmax;
     data->curve->GetDomain(&tmin, &tmax);
 

Modified: brlcad/trunk/src/other/stepcode/src/clutils/dirobj.cc
===================================================================
--- brlcad/trunk/src/other/stepcode/src/clutils/dirobj.cc       2013-08-19 
18:58:18 UTC (rev 56967)
+++ brlcad/trunk/src/other/stepcode/src/clutils/dirobj.cc       2013-08-19 
19:19:46 UTC (rev 56968)
@@ -230,6 +230,10 @@
         buf.clear();
     } else {
         buf.assign( b );
+
+#if !defined(__WIN32__)
+       free(b);
+#endif
     }
 
     if( buf.empty() ) {

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to