From f319443f52af7f8067c6eeb47f49e6835983fd60 Mon Sep 17 00:00:00 2001 From: Mike Taves Date: Tue, 9 Jan 2024 15:47:30 +1300 Subject: [PATCH] Fix StringTokenizer::peekNextToken --- src/io/StringTokenizer.cpp | 6 ++---- tests/unit/io/WKTReaderTest.cpp | 10 ++++++++++ 2 files changed, 12 insertions(+), 4 deletions(-) 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 b247ba844e..59e5f1b252 100644 --- a/tests/unit/io/WKTReaderTest.cpp +++ b/tests/unit/io/WKTReaderTest.cpp @@ -462,5 +462,15 @@ void object::test<23> ensure(std::isnan(coords->getY(0))); } +// EMPTY token with some white space +template<> +template<> +void object::test<24> +() +{ + GeomPtr geom(wktreader.read("MULTIPOINT( EMPTY, (10 10), (20 20))")); + + ensure_equals(geom->getNumGeometries(), 3u); +} } // namespace tut