From 68957406bc139229577cbf913926850de4bc3f19 Mon Sep 17 00:00:00 2001 From: Anand Thakker Date: Wed, 11 Apr 2018 14:13:48 -0400 Subject: Handle exceptions from vtzero::decode_geometry() --- src/mbgl/tile/vector_tile_data.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mbgl/tile/vector_tile_data.cpp b/src/mbgl/tile/vector_tile_data.cpp index 6e619dab48..93dba57b4b 100644 --- a/src/mbgl/tile/vector_tile_data.cpp +++ b/src/mbgl/tile/vector_tile_data.cpp @@ -1,5 +1,6 @@ #include #include +#include namespace mbgl { @@ -109,11 +110,16 @@ struct GeometryHandler { GeometryCollection VectorTileFeature::getGeometries() const { const float scale = float(util::EXTENT) / layer.extent(); const vtzero::geometry geometry = feature.geometry(); - GeometryCollection lines = vtzero::decode_geometry(geometry, GeometryHandler(scale)); - if (layer.version() >= 2 || feature.geometry_type() != vtzero::GeomType::POLYGON) { - return lines; - } else { - return fixupPolygons(lines); + try { + GeometryCollection lines = vtzero::decode_geometry(geometry, GeometryHandler(scale)); + if (layer.version() >= 2 || feature.geometry_type() != vtzero::GeomType::POLYGON) { + return lines; + } else { + return fixupPolygons(lines); + } + } catch (const std::exception& e) { + Log::Warning(Event::ParseTile, std::string("vtzero: ") + e.what()); + return {}; } } -- cgit v1.2.1