[geos-commits] r2531 - branches/3.0/source/operation/overlay

svn_geos at osgeo.org svn_geos at osgeo.org
Wed May 27 15:10:59 EDT 2009


Author: pramsey
Date: 2009-05-27 15:10:59 -0400 (Wed, 27 May 2009)
New Revision: 2531

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


Modified: branches/3.0/source/operation/overlay/PolygonBuilder.cpp
===================================================================
--- branches/3.0/source/operation/overlay/PolygonBuilder.cpp	2009-05-27 19:01:09 UTC (rev 2530)
+++ branches/3.0/source/operation/overlay/PolygonBuilder.cpp	2009-05-27 19:10:59 UTC (rev 2531)
@@ -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,19 @@
 		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