summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzmiao <miao.zhao@mapbox.com>2020-04-06 13:45:35 +0300
committerzmiao <miao.zhao@mapbox.com>2020-04-07 13:39:33 +0300
commite1ff66cac4727790a4d0e7d253245d959dbb0b12 (patch)
tree5525a9fa0c9377d91c3429135a95f8c951799c83
parent56945b1ae27080a6dc5570f0617838c5efd89a19 (diff)
downloadqtlocation-mapboxgl-upstream/zmiao-fix-undefined-behaviour.tar.gz
-rw-r--r--src/mbgl/layout/symbol_layout.cpp2
-rw-r--r--src/mbgl/renderer/layers/render_line_layer.cpp6
2 files changed, 2 insertions, 6 deletions
diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp
index f16f310a06..d996041ebe 100644
--- a/src/mbgl/layout/symbol_layout.cpp
+++ b/src/mbgl/layout/symbol_layout.cpp
@@ -743,7 +743,7 @@ std::vector<float> SymbolLayout::calculateTileDistances(const GeometryCoordinate
if (i != 0u) {
sumBackwardLength += util::dist<float>(line[i - 1], line[i]);
} else {
- break;
+ break; // Add break to avoid unsigned integer overflow when i==0
}
}
}
diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp
index 249248e666..b03ac8027b 100644
--- a/src/mbgl/renderer/layers/render_line_layer.cpp
+++ b/src/mbgl/renderer/layers/render_line_layer.cpp
@@ -242,11 +242,7 @@ GeometryCollection offsetLine(const GeometryCollection& rings, double offset) {
Point<double> extrude = util::unit(aToB + bToC);
const double cosHalfAngle = extrude.x * bToC.x + extrude.y * bToC.y;
- if (cosHalfAngle == 0) {
- extrude = zero;
- } else {
- extrude *= (1.0 / cosHalfAngle);
- }
+ extrude *= (cosHalfAngle != 0) ? (1.0 / cosHalfAngle) : 0;
newRing.emplace_back(convertPoint<int16_t>(extrude * offset) + p);
}