Merge pull request #3612 from mapnik/v3.0.x-3611

V3.0.x ref #3611
This commit is contained in:
Artem Pavlenko 2017-02-06 14:26:01 +01:00 committed by GitHub
commit 391a9f835b
4 changed files with 46 additions and 37 deletions

View file

@ -61,7 +61,7 @@ struct push_box_impl
template <typename T0, typename T1, typename T2, typename T3> template <typename T0, typename T1, typename T2, typename T3>
void operator() (T0 & boxes, T1 const& begin, T2 const& box, T3 const& range) const void operator() (T0 & boxes, T1 const& begin, T2 const& box, T3 const& range) const
{ {
if (box.valid()) boxes.emplace_back(box, boxes.emplace_back(box,
std::make_pair(std::distance(begin, std::make_pair(std::distance(begin,
range.begin()), range.begin()),
std::distance(range.begin(), range.end()))); std::distance(range.begin(), range.end())));

@ -1 +1 @@
Subproject commit 5ad14e6bdf2c5e6babd8ac04aa057ed6c67ac617 Subproject commit 4035e34534d6f0ad7060fc4a2f5f6018c61d7a1b

View file

@ -514,7 +514,8 @@ TEST_CASE("geojson") {
for (auto const& c_str : {"./test/data/json/feature-malformed-1.geojson", for (auto const& c_str : {"./test/data/json/feature-malformed-1.geojson",
"./test/data/json/feature-malformed-2.geojson", "./test/data/json/feature-malformed-2.geojson",
"./test/data/json/feature-malformed-3.geojson"}) "./test/data/json/feature-malformed-3.geojson",
"./test/data/json/feature-malformed-4.geojson"})
{ {
std::string filename(c_str); std::string filename(c_str);
params["file"] = filename; params["file"] = filename;
@ -554,11 +555,13 @@ TEST_CASE("geojson") {
SECTION("GeoJSON ensure mapnik::featureset::next() throws on malformed input") SECTION("GeoJSON ensure mapnik::featureset::next() throws on malformed input")
{ {
std::string filename{"./test/data/json/featurecollection-malformed.json"};
mapnik::parameters params; mapnik::parameters params;
params["type"] = "geojson"; params["type"] = "geojson";
for (auto const& c_str : {"./test/data/json/featurecollection-malformed.json",
"./test/data/json/featurecollection-malformed-2.json"})
{
std::string filename(c_str);
params["file"] = filename; params["file"] = filename;
// cleanup in the case of a failed previous run // cleanup in the case of a failed previous run
if (mapnik::util::exists(filename + ".index")) if (mapnik::util::exists(filename + ".index"))
{ {
@ -593,6 +596,7 @@ TEST_CASE("geojson") {
mapnik::util::remove(filename + ".index"); mapnik::util::remove(filename + ".index");
} }
} }
}
SECTION("GeoJSON ensure input fully consumed and throw exception otherwise") SECTION("GeoJSON ensure input fully consumed and throw exception otherwise")
{ {

View file

@ -137,6 +137,11 @@ std::pair<bool,typename T::value_type::first_type> process_geojson_file(T & boxe
} }
} }
} }
else if (validate_features)
{
if (verbose) std::clog << "Invalid bbox encountered " << item.first << std::endl;
return std::make_pair(false, extent);
}
} }
return std::make_pair(true, extent); return std::make_pair(true, extent);
} }