diff options
author | Greg Studer <greg@10gen.com> | 2014-03-18 16:12:19 -0400 |
---|---|---|
committer | Greg Studer <greg@10gen.com> | 2014-03-19 09:53:49 -0400 |
commit | 16be7b9840df1df12421ed7ef009005c7d321ec7 (patch) | |
tree | 1eceb57d3bb1ecd011820f4c028715bfde90df76 /src/mongo/db/geo/geoparser.cpp | |
parent | 19ad2f402b588887ede8001116c3ce48329987ab (diff) | |
download | mongo-16be7b9840df1df12421ed7ef009005c7d321ec7.tar.gz |
SERVER-13258 ensure S2 poly loops have 3 points after dedup'ing
Diffstat (limited to 'src/mongo/db/geo/geoparser.cpp')
-rw-r--r-- | src/mongo/db/geo/geoparser.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mongo/db/geo/geoparser.cpp b/src/mongo/db/geo/geoparser.cpp index a4d21ca7a61..e5fe800ea23 100644 --- a/src/mongo/db/geo/geoparser.cpp +++ b/src/mongo/db/geo/geoparser.cpp @@ -164,6 +164,8 @@ namespace mongo { // The last point is duplicated. We drop it, since S2Loop expects no // duplicate points exteriorVertices.resize(exteriorVertices.size() - 1); + // S2 Polygon loops must have 3 vertices + if (exteriorVertices.size() < 3) { return false; } S2PolygonBuilderOptions polyOptions; polyOptions.set_validate(true); @@ -185,6 +187,8 @@ namespace mongo { eraseDuplicatePoints(&holePoints); // Drop the duplicated last point. holePoints.resize(holePoints.size() - 1); + // S2 Polygon loops must have 3 vertices + if (holePoints.size() < 3) { return false; } // Interior rings are clockwise. S2Loop holeLoop(holePoints); holeLoop.Normalize(); |