diff options
author | Chris Loer <chris.loer@gmail.com> | 2018-01-31 13:09:00 +0000 |
---|---|---|
committer | Chris Loer <chris.loer@mapbox.com> | 2018-02-06 09:12:21 -0800 |
commit | d3deb6d71bdf837c3d82078630dbd11710a03d32 (patch) | |
tree | d8ea4ac6c6716cdec303232ad25768e996239881 /src/mbgl | |
parent | f7cae4c3e49282417d87a98a64bc94b12993855d (diff) | |
download | qtlocation-mapboxgl-d3deb6d71bdf837c3d82078630dbd11710a03d32.tar.gz |
[core] Don't crash on line labels with 0 glyphs.
Fixes issue #10956.
Diffstat (limited to 'src/mbgl')
-rw-r--r-- | src/mbgl/layout/symbol_projection.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/mbgl/layout/symbol_projection.cpp b/src/mbgl/layout/symbol_projection.cpp index ee6385c93c..9e077e2532 100644 --- a/src/mbgl/layout/symbol_projection.cpp +++ b/src/mbgl/layout/symbol_projection.cpp @@ -318,7 +318,7 @@ namespace mbgl { placedGlyphs.push_back(*placedGlyph); } placedGlyphs.push_back(firstAndLastGlyph->second); - } else { + } else if (symbol.glyphOffsets.size() == 1) { // Only a single glyph to place // So, determine whether to flip based on projected angle of the line segment it's on if (keepUpright && !flip) { @@ -337,7 +337,6 @@ namespace mbgl { return *orientationChange; } } - assert(symbol.glyphOffsets.size() == 1); // We are relying on SymbolInstance.hasText filtering out symbols without any glyphs at all const float glyphOffsetX = symbol.glyphOffsets.front(); optional<PlacedGlyph> singleGlyph = placeGlyphAlongLine(fontScale * glyphOffsetX, lineOffsetX, lineOffsetY, flip, projectedAnchorPoint, symbol.anchorPoint, symbol.segment, symbol.line, symbol.tileDistances, labelPlaneMatrix, false); @@ -347,6 +346,8 @@ namespace mbgl { placedGlyphs.push_back(*singleGlyph); } + // The number of placedGlyphs must equal the number of glyphOffsets, which must correspond to the number of glyph vertices + // There may be 0 glyphs here, if a label consists entirely of glyphs that have 0x0 dimensions for (auto& placedGlyph : placedGlyphs) { addDynamicAttributes(placedGlyph.point, placedGlyph.angle, dynamicVertexArray); } |