From a601efe41213df90da21870803025d8379a547b3 Mon Sep 17 00:00:00 2001 From: Tim Sylvester Date: Mon, 24 Jun 2024 09:07:26 -0700 Subject: [PATCH] drop symbols and buckets when checks fail --- src/mbgl/layout/symbol_layout.cpp | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp index a3cfbed3ca3..a609922061c 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -878,9 +878,12 @@ void SymbolLayout::createBucket(const ImagePositions&, canonical, lastAddedSection); } - symbolInstance.check(__SOURCE_LOCATION__); - assert(lastAddedSection); // True, as hasText == true; - updatePaintPropertiesForSection(*bucket, feature, *lastAddedSection, canonical); + if (symbolInstance.check(__SOURCE_LOCATION__)) { + assert(lastAddedSection); // True, as hasText == true; + updatePaintPropertiesForSection(*bucket, feature, *lastAddedSection, canonical); + } else { + break; + } } symbolInstance.releaseSharedData(); @@ -889,14 +892,16 @@ void SymbolLayout::createBucket(const ImagePositions&, if (showCollisionBoxes) { addToDebugBuffers(*bucket); } - if (bucket->hasData()){ - for (const auto& pair : layerPaintProperties) { - if (!firstLoad) { - bucket->justReloaded = true; + if (bucket->hasData()) { + if (bucket->check(__SOURCE_LOCATION__)) { + for (const auto &pair: layerPaintProperties) { + if (!firstLoad) { + bucket->justReloaded = true; + } + renderData.emplace(pair.first, LayerRenderData{bucket, pair.second}); } - renderData.emplace(pair.first, LayerRenderData{bucket, pair.second}); + bucket->check(__SOURCE_LOCATION__); } - bucket->check(__SOURCE_LOCATION__); } }