From cf3965793b72520b21a77f0f7db85d4e32766f69 Mon Sep 17 00:00:00 2001 From: Mikhail Pozdnyakov Date: Mon, 19 Aug 2019 14:09:34 +0300 Subject: [core] Reproduce layer impl cast problem --- src/mbgl/renderer/layers/render_background_layer.cpp | 2 ++ src/mbgl/renderer/layers/render_circle_layer.cpp | 1 + src/mbgl/renderer/layers/render_custom_layer.cpp | 1 + src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp | 1 + src/mbgl/renderer/layers/render_fill_layer.cpp | 1 + src/mbgl/renderer/layers/render_heatmap_layer.cpp | 1 + src/mbgl/renderer/layers/render_hillshade_layer.cpp | 1 + src/mbgl/renderer/layers/render_line_layer.cpp | 1 + src/mbgl/renderer/layers/render_raster_layer.cpp | 1 + 9 files changed, 10 insertions(+) diff --git a/src/mbgl/renderer/layers/render_background_layer.cpp b/src/mbgl/renderer/layers/render_background_layer.cpp index 4725bce435..5cce471601 100644 --- a/src/mbgl/renderer/layers/render_background_layer.cpp +++ b/src/mbgl/renderer/layers/render_background_layer.cpp @@ -16,7 +16,9 @@ namespace mbgl { using namespace style; + inline const BackgroundLayer::Impl& impl(const Immutable& impl) { + if(impl->getTypeInfo() != BackgroundLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_circle_layer.cpp b/src/mbgl/renderer/layers/render_circle_layer.cpp index 4f1620364f..64812ba055 100644 --- a/src/mbgl/renderer/layers/render_circle_layer.cpp +++ b/src/mbgl/renderer/layers/render_circle_layer.cpp @@ -16,6 +16,7 @@ namespace mbgl { using namespace style; inline const style::CircleLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != CircleLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_custom_layer.cpp b/src/mbgl/renderer/layers/render_custom_layer.cpp index 75c21997b0..eeef7d742b 100644 --- a/src/mbgl/renderer/layers/render_custom_layer.cpp +++ b/src/mbgl/renderer/layers/render_custom_layer.cpp @@ -15,6 +15,7 @@ namespace mbgl { using namespace style; inline const CustomLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != CustomLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp index 3c97ab7431..a5146964f1 100644 --- a/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_extrusion_layer.cpp @@ -21,6 +21,7 @@ namespace mbgl { using namespace style; inline const FillExtrusionLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != FillExtrusionLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_fill_layer.cpp b/src/mbgl/renderer/layers/render_fill_layer.cpp index 6a134a398a..aecc5d6bf5 100644 --- a/src/mbgl/renderer/layers/render_fill_layer.cpp +++ b/src/mbgl/renderer/layers/render_fill_layer.cpp @@ -22,6 +22,7 @@ namespace mbgl { using namespace style; inline const FillLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != FillLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_heatmap_layer.cpp b/src/mbgl/renderer/layers/render_heatmap_layer.cpp index 478a8f8c47..b5be02a5a4 100644 --- a/src/mbgl/renderer/layers/render_heatmap_layer.cpp +++ b/src/mbgl/renderer/layers/render_heatmap_layer.cpp @@ -20,6 +20,7 @@ namespace mbgl { using namespace style; inline const HeatmapLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != HeatmapLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_hillshade_layer.cpp b/src/mbgl/renderer/layers/render_hillshade_layer.cpp index 2c7e0aef86..970c6fd924 100644 --- a/src/mbgl/renderer/layers/render_hillshade_layer.cpp +++ b/src/mbgl/renderer/layers/render_hillshade_layer.cpp @@ -19,6 +19,7 @@ namespace mbgl { using namespace style; inline const HillshadeLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != HillshadeLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_line_layer.cpp b/src/mbgl/renderer/layers/render_line_layer.cpp index fcd52b21df..92be7f3e11 100644 --- a/src/mbgl/renderer/layers/render_line_layer.cpp +++ b/src/mbgl/renderer/layers/render_line_layer.cpp @@ -21,6 +21,7 @@ namespace mbgl { using namespace style; inline const LineLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != LineLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } diff --git a/src/mbgl/renderer/layers/render_raster_layer.cpp b/src/mbgl/renderer/layers/render_raster_layer.cpp index 82d135b9ef..5924dfe937 100644 --- a/src/mbgl/renderer/layers/render_raster_layer.cpp +++ b/src/mbgl/renderer/layers/render_raster_layer.cpp @@ -15,6 +15,7 @@ namespace mbgl { using namespace style; inline const RasterLayer::Impl& impl(const Immutable& impl) { + if (impl->getTypeInfo() != RasterLayer::Impl::staticTypeInfo()) abort(); return static_cast(*impl); } -- cgit v1.2.1