[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