[geos-commits] r2532 - branches/3.1/source/operation/overlay

svn_geos at osgeo.org svn_geos at osgeo.org
Wed May 27 15:11:05 EDT 2009


Author: pramsey
Date: 2009-05-27 15:11:05 -0400 (Wed, 27 May 2009)
New Revision: 2532

Modified:
   branches/3.1/source/operation/overlay/PolygonBuilder.cpp
Log:
Backport r2366 from trunk.



Modified: branches/3.1/source/operation/overlay/PolygonBuilder.cpp
===================================================================
--- branches/3.1/source/operation/overlay/PolygonBuilder.cpp	2009-05-27 19:10:59 UTC (rev 2531)
+++ branches/3.1/source/operation/overlay/PolygonBuilder.cpp	2009-05-27 19:11:05 UTC (rev 2532)
@@ -30,6 +30,7 @@
 #include <geos/geom/Polygon.h>
 #include <geos/algorithm/CGAlgorithms.h>
 #include <geos/util/TopologyException.h>
+#include <geos/util/GEOSException.h>
 
 #include <vector>
 #include <cassert>
@@ -183,7 +184,18 @@
 		if (de->isInResult() && de->getLabel()->isArea()) {
 			// if this edge has not yet been processed
 			if (de->getEdgeRing()==NULL) {
-				MaximalEdgeRing *er=new MaximalEdgeRing(de,geometryFactory);
+				MaximalEdgeRing *er;
+				try
+				{
+					er=new MaximalEdgeRing(de,geometryFactory);
+				}
+				catch( util::GEOSException& e )
+				{
+					for( size_t i=0, n=maxEdgeRings->size(); i<n; i++)
+						delete (*maxEdgeRings)[i];
+					delete maxEdgeRings;
+					throw;
+				}
 				maxEdgeRings->push_back(er);
 				er->setInResult();
 				//System.out.println("max node degree=" + er.getMaxDegree());



More information about the geos-commits mailing list