[geos-commits] r2354 - trunk/source/operation/buffer
svn_geos at osgeo.org
svn_geos at osgeo.org
Tue Apr 14 06:50:17 EDT 2009
Author: strk
Date: 2009-04-14 06:50:17 -0400 (Tue, 14 Apr 2009)
New Revision: 2354
Modified:
trunk/source/operation/buffer/BufferBuilder.cpp
Log:
Fix memory leak in BufferBuilder (due to just-ported short-circuit)
Modified: trunk/source/operation/buffer/BufferBuilder.cpp
===================================================================
--- trunk/source/operation/buffer/BufferBuilder.cpp 2009-04-14 10:27:41 UTC (rev 2353)
+++ trunk/source/operation/buffer/BufferBuilder.cpp 2009-04-14 10:50:17 UTC (rev 2354)
@@ -160,7 +160,7 @@
#endif
Geometry* resultGeom=NULL;
- std::vector<Geometry*> *resultPolyList=NULL;
+ std::auto_ptr< std::vector<Geometry*> > resultPolyList;
std::vector<BufferSubgraph*> subgraphList;
try {
@@ -177,7 +177,7 @@
#endif
PolygonBuilder polyBuilder(geomFact);
buildSubgraphs(subgraphList, polyBuilder);
- resultPolyList=polyBuilder.getPolygons();
+ resultPolyList.reset( polyBuilder.getPolygons() );
#if GEOS_DEBUG
std::cerr << "PolygonBuilder got " << resultPolyList->size()
<< " polygons" << std::endl;
@@ -194,7 +194,8 @@
return createEmptyResultGeometry();
}
- resultGeom=geomFact->buildGeometry(resultPolyList);
+ // resultPolyList ownership transferred here
+ resultGeom=geomFact->buildGeometry(resultPolyList.release());
} catch (const util::GEOSException& /* exc */) {
for (size_t i=0, n=subgraphList.size(); i<n; i++)
delete subgraphList[i];
More information about the geos-commits
mailing list