[geos-commits] r3439 - in trunk: src/operation/buffer
tests/unit/capi
svn_geos at osgeo.org
svn_geos at osgeo.org
Wed Jul 20 07:45:24 EDT 2011
Author: strk
Date: 2011-07-20 04:45:24 -0700 (Wed, 20 Jul 2011)
New Revision: 3439
Modified:
trunk/src/operation/buffer/BufferBuilder.cpp
trunk/tests/unit/capi/GEOSOffsetCurveTest.cpp
Log:
Have GEOSOffsetCurve with distance 0 return the input (fixes bug #454)
Modified: trunk/src/operation/buffer/BufferBuilder.cpp
===================================================================
--- trunk/src/operation/buffer/BufferBuilder.cpp 2011-07-20 09:12:23 UTC (rev 3438)
+++ trunk/src/operation/buffer/BufferBuilder.cpp 2011-07-20 11:45:24 UTC (rev 3439)
@@ -141,6 +141,9 @@
const LineString* l = dynamic_cast< const LineString* >( g );
if ( !l ) throw util::IllegalArgumentException("BufferBuilder::bufferLineSingleSided only accept linestrings");
+ // Nothing to do for a distance of zero
+ if ( distance == 0 ) return g->clone();
+
// Get geometry factory and precision model.
const PrecisionModel* precisionModel = workingPrecisionModel;
if ( !precisionModel ) precisionModel = l->getPrecisionModel();
Modified: trunk/tests/unit/capi/GEOSOffsetCurveTest.cpp
===================================================================
--- trunk/tests/unit/capi/GEOSOffsetCurveTest.cpp 2011-07-20 09:12:23 UTC (rev 3438)
+++ trunk/tests/unit/capi/GEOSOffsetCurveTest.cpp 2011-07-20 11:45:24 UTC (rev 3439)
@@ -168,6 +168,26 @@
));
}
+ // 0 distance
+ // See http://trac.osgeo.org/postgis/ticket/454
+ template<>
+ template<>
+ void object::test<6>()
+ {
+ geom1_ = GEOSGeomFromWKT("LINESTRING(0 0, 10 0)");
+ ensure( 0 != geom1_ );
+
+ geom2_ = GEOSOffsetCurve(geom1_, 0, 0, GEOSBUF_JOIN_ROUND, 2);
+
+ ensure( 0 != geom2_ );
+
+ wkt_ = GEOSWKTWriter_write(wktw_, geom2_);
+
+ ensure_equals(std::string(wkt_), std::string(
+ "LINESTRING (0 0, 10 0)"
+ ));
+ }
+
} // namespace tut
More information about the geos-commits
mailing list