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