summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2017-03-28 16:02:48 -0700
committerGitHub <noreply@github.com>2017-03-28 16:02:48 -0700
commit1edbb0f24b3b405bfc203803fffb1fa1ed68f142 (patch)
tree8333ceae07f64e4d06ee61f3a7f921bd194844c6
parentc5c69102c5ca1aabb0efda1fe64224256a56bbb1 (diff)
downloadqtlocation-mapboxgl-1edbb0f24b3b405bfc203803fffb1fa1ed68f142.tar.gz
[core] check null data in query source features (#8553)
* [core] check null data in query source features * Include what you use
-rw-r--r--src/mbgl/tile/geometry_tile.cpp5
-rw-r--r--test/tile/vector_tile.test.cpp10
2 files changed, 15 insertions, 0 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp
index 5f1fc5de66..5ccc037ce0 100644
--- a/src/mbgl/tile/geometry_tile.cpp
+++ b/src/mbgl/tile/geometry_tile.cpp
@@ -165,6 +165,11 @@ void GeometryTile::queryRenderedFeatures(
void GeometryTile::querySourceFeatures(
std::vector<Feature>& result,
const style::SourceQueryOptions& options) {
+
+ // Data not yet available
+ if (!data) {
+ return;
+ }
// No source layers, specified, nothing to do
if (!options.sourceLayers) {
diff --git a/test/tile/vector_tile.test.cpp b/test/tile/vector_tile.test.cpp
index 49fdcbd9f8..f9bdafa5d2 100644
--- a/test/tile/vector_tile.test.cpp
+++ b/test/tile/vector_tile.test.cpp
@@ -7,6 +7,7 @@
#include <mbgl/util/run_loop.hpp>
#include <mbgl/map/transform.hpp>
#include <mbgl/style/style.hpp>
+#include <mbgl/style/query.hpp>
#include <mbgl/style/update_parameters.hpp>
#include <mbgl/style/layers/symbol_layer.hpp>
#include <mbgl/renderer/symbol_bucket.hpp>
@@ -86,3 +87,12 @@ TEST(VectorTile, Issue7615) {
EXPECT_EQ(symbolBucket.get(), tile.getBucket(symbolLayer));
}
+
+TEST(VectorTile, Issue8542) {
+ VectorTileTest test;
+ VectorTile tile(OverscaledTileID(0, 0, 0), "source", test.updateParameters, test.tileset);
+
+ // Query before data is set
+ std::vector<Feature> result;
+ tile.querySourceFeatures(result, { { {"layer"} }, {} });
+}