diff --git a/NEWS.md b/NEWS.md index 704b544915..c8e4d73a85 100644 --- a/NEWS.md +++ b/NEWS.md @@ -10,6 +10,7 @@ xxxx-xx-xx - Fix IsSimpleOp for MultiPoint with empty element (GH-1005, Martin Davis) - Fix PreparedPolygonContains for GC with MultiPoint (GH-1008, Martin Davis) - Fix TopologyPreservingSimplifier to prevent jumping components (GH-1012, Martin Davis) + - Fix reading WKT with EMPTY token with white space (GH-1025, Mike Taves) ## Changes in 3.12.1 2023-11-11 diff --git a/src/io/StringTokenizer.cpp b/src/io/StringTokenizer.cpp index 5735913ccd..e016299eb4 100644 --- a/src/io/StringTokenizer.cpp +++ b/src/io/StringTokenizer.cpp @@ -154,10 +154,8 @@ StringTokenizer::peekNextToken() return str[pos]; } - // It's either a Number or a Word, let's - // see when it ends - - pos = str.find_first_of("\n\r\t() ,", static_cast(iter - str.begin())); + // It's either a Number or a Word, let's see when it ends + pos = str.find_first_of("\n\r\t() ,", pos + 1); if(pos == string::npos) { if(iter != str.end()) { diff --git a/tests/unit/io/WKTReaderTest.cpp b/tests/unit/io/WKTReaderTest.cpp index 3180a66869..37bc3010d5 100644 --- a/tests/unit/io/WKTReaderTest.cpp +++ b/tests/unit/io/WKTReaderTest.cpp @@ -447,4 +447,15 @@ void object::test<22> ensure_dimension("MULTIPOINT ZM ((0 0 4 3), (1 2 4 5))", true, true); } +// EMPTY token with some white space +template<> +template<> +void object::test<23> +() +{ + GeomPtr geom(wktreader.read("MULTIPOINT( EMPTY, (10 10), (20 20))")); + + ensure_equals(geom->getNumGeometries(), 3u); +} + } // namespace tut