This is an automated email from the git hooks/post-receive script. sebastic pushed a commit to branch master in repository geos.
commit 703594d98ea2f441e8b97688e0c645f3f876da3e Author: Bas Couwenberg <[email protected]> Date: Tue Nov 28 20:08:55 2017 +0100 Add patch to fix empty GEOSSimplify return on inner ring collapse. --- debian/changelog | 1 + ...EOSSimplify-return-on-inner-ring-collapse.patch | 110 +++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 112 insertions(+) diff --git a/debian/changelog b/debian/changelog index 38dca16..b569511 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,7 @@ geos (3.5.1-4) UNRELEASED; urgency=medium * Ignore test failures on problematic architectures only. * Strip trailing whitespace from changelog, control & rules files. + * Add patch to fix empty GEOSSimplify return on inner ring collapse. -- Bas Couwenberg <[email protected]> Fri, 20 Jan 2017 15:57:07 +0100 diff --git a/debian/patches/0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch b/debian/patches/0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch new file mode 100644 index 0000000..ed5c02f --- /dev/null +++ b/debian/patches/0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch @@ -0,0 +1,110 @@ +Description: Fix empty GEOSSimplify return on inner ring collapse + . + Patch by Even Rouault + See #741 + . + git-svn-id: http://svn.osgeo.org/geos/trunk@4311 5242fede-7e19-0410-aef8-94bd7d2200fb +Author: Even Rouault +Origin: https://git.osgeo.org/gogs/geos/geos/commit/710ddbe48177c215f98dd5e90fb64460b35401a7 +Bug: https://trac.osgeo.org/geos/ticket/741 + +--- a/include/geos/geom/util/GeometryTransformer.h ++++ b/include/geos/geom/util/GeometryTransformer.h +@@ -99,6 +99,8 @@ public: + + std::auto_ptr<Geometry> transform(const Geometry* nInputGeom); + ++ void setSkipTransformedInvalidInteriorRings(bool b); ++ + protected: + + const GeometryFactory* factory; +@@ -178,9 +180,14 @@ private: + */ + bool preserveType; + +- // Declare type as noncopyable +- GeometryTransformer(const GeometryTransformer& other); +- GeometryTransformer& operator=(const GeometryTransformer& rhs); ++ /** ++ * <code>true</code> if transformed invalid interior rings should be skipped ++ */ ++ bool skipTransformedInvalidInteriorRings; ++ ++ // Declare type as noncopyable ++ GeometryTransformer(const GeometryTransformer& other); ++ GeometryTransformer& operator=(const GeometryTransformer& rhs); + }; + + +--- a/src/geom/util/GeometryTransformer.cpp ++++ b/src/geom/util/GeometryTransformer.cpp +@@ -59,13 +59,19 @@ GeometryTransformer::GeometryTransformer + pruneEmptyGeometry(true), + preserveGeometryCollectionType(true), + preserveCollections(false), +- preserveType(false) ++ preserveType(false), ++ skipTransformedInvalidInteriorRings(false) + {} + + GeometryTransformer::~GeometryTransformer() + { + } + ++void GeometryTransformer::setSkipTransformedInvalidInteriorRings(bool b) ++{ ++ skipTransformedInvalidInteriorRings = b; ++} ++ + /*public*/ + auto_ptr<Geometry> + GeometryTransformer::transform(const Geometry* nInputGeom) +@@ -283,6 +289,8 @@ GeometryTransformer::transformPolygon( + + if ( ! dynamic_cast<LinearRing*>(hole.get()) ) + { ++ if ( skipTransformedInvalidInteriorRings ) ++ continue; + isAllValidLinearRings = false; + } + +--- a/src/simplify/DouglasPeuckerSimplifier.cpp ++++ b/src/simplify/DouglasPeuckerSimplifier.cpp +@@ -89,6 +89,7 @@ DPTransformer::DPTransformer(double t) + : + distanceTolerance(t) + { ++ setSkipTransformedInvalidInteriorRings(true); + } + + Geometry::AutoPtr +--- a/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp ++++ b/tests/unit/simplify/DouglasPeuckerSimplifierTest.cpp +@@ -335,5 +335,26 @@ namespace tut + //std::string const simplifiedWkt2 = wktwriter.write(simplified2.get()); + } + ++ // 13 - Polygon with inner ring whose extent is less than the simplify distance (#741) ++ template<> ++ template<> ++ void object::test<13>() ++ { ++ std::string wkt_in("POLYGON ((0 0,0 1,1 1,0 0),(0.1 0.1,0.2 0.1,0.2 0.2,0.1 0.1))"); ++ ++ std::string wkt_ex("POLYGON ((0 0,0 1,1 1,0 0))"); ++ ++ GeomPtr g(wktreader.read(wkt_in)); ++ ++ GeomPtr expected(wktreader.read(wkt_ex)); ++ ++ GeomPtr simplified = DouglasPeuckerSimplifier::simplify( ++ g.get(), 0.5); ++ ++ ensure( simplified->isValid() ); ++ ++ ensure( simplified->equalsExact(expected.get()) ); ++ } ++ + } // namespace tut + diff --git a/debian/patches/series b/debian/patches/series index b70acfb..2d72de3 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,3 +3,4 @@ libruby ruby2 disable-docygen-html-timestamp spelling-errors.patch +0001-Fix-empty-GEOSSimplify-return-on-inner-ring-collapse.patch -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/geos.git _______________________________________________ Pkg-grass-devel mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-grass-devel

