aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/io.cpp4
-rw-r--r--test/unit/test_io.cpp5
2 files changed, 9 insertions, 0 deletions
diff --git a/src/io.cpp b/src/io.cpp
index bfba9ed6..e8dbd147 100644
--- a/src/io.cpp
+++ b/src/io.cpp
@@ -1038,6 +1038,10 @@ WKTNodeNNPtr WKTNode::createFrom(const std::string &wkt, size_t indexStart,
assert(indexEndChild > i);
i = indexEndChild;
i = skipSpace(wkt, i);
+ if (i < wkt.size() && wkt[i] == ',') {
+ ++i;
+ i = skipSpace(wkt, i);
+ }
}
if (i == wkt.size() || (wkt[i] != ']' && wkt[i] != ')')) {
throw ParsingException("missing ]");
diff --git a/test/unit/test_io.cpp b/test/unit/test_io.cpp
index 6a2de028..606d57a3 100644
--- a/test/unit/test_io.cpp
+++ b/test/unit/test_io.cpp
@@ -119,6 +119,11 @@ TEST(io, wkt_parsing) {
str = "A[" + str + "]";
}
EXPECT_THROW(WKTNode::createFrom(str), ParsingException);
+
+ {
+ auto wkt = "A[\"a\",B[\"b\",C[\"c\"]],D[\"d\"]]";
+ EXPECT_EQ(WKTNode::createFrom(wkt)->toString(), wkt);
+ }
}
// ---------------------------------------------------------------------------