summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/tile/geometry_tile.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index f4589b4052..1a74880377 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -28,6 +28,8 @@ static ClipperLib::Path toClipperPath(const GeometryCoordinates& ring) {
static GeometryCoordinates fromClipperPath(const ClipperLib::Path& path) {
GeometryCoordinates result;
+ result.reserve(path.size() + 1);
+
result.reserve(path.size());
for (const auto& p : path) {
using Coordinate = GeometryCoordinates::coordinate_type;
@@ -37,6 +39,12 @@ static GeometryCoordinates fromClipperPath(const ClipperLib::Path& path) {
assert(p.y <= std::numeric_limits<Coordinate>::max());
result.emplace_back(Coordinate(p.x), Coordinate(p.y));
}
+
+ // Clipper does not repeat initial point, but our geometry model requires it.
+ if (!result.empty()) {
+ result.push_back(result.front());
+ }
+
return result;
}