diff options
Diffstat (limited to 'src/mbgl/tile')
-rw-r--r-- | src/mbgl/tile/geometry_tile.cpp | 7 | ||||
-rw-r--r-- | src/mbgl/tile/tile.hpp | 3 |
2 files changed, 5 insertions, 5 deletions
diff --git a/src/mbgl/tile/geometry_tile.cpp b/src/mbgl/tile/geometry_tile.cpp index c85f9ef713..977744248d 100644 --- a/src/mbgl/tile/geometry_tile.cpp +++ b/src/mbgl/tile/geometry_tile.cpp @@ -200,9 +200,10 @@ Bucket* GeometryTile::getBucket(const Layer::Impl& layer) const { if (it == buckets.end()) { return nullptr; } - - assert(it->second); - return it->second.get(); + Bucket* result = it->second.get(); + assert(result); + // Bucket might be outdated, see issue #12432. + return result->supportsLayer(layer) ? result : nullptr; } float GeometryTile::getQueryPadding(const std::vector<const RenderLayer*>& layers) { diff --git a/src/mbgl/tile/tile.hpp b/src/mbgl/tile/tile.hpp index 70b2aa0371..3bd655a6c8 100644 --- a/src/mbgl/tile/tile.hpp +++ b/src/mbgl/tile/tile.hpp @@ -56,8 +56,7 @@ public: template <class T> T* getBucket(const style::Layer::Impl& layer) const { - Bucket* bucket = getBucket(layer); - return bucket ? bucket->as<T>() : nullptr; + return static_cast<T*>(getBucket(layer)); } virtual void setShowCollisionBoxes(const bool) {} |