summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnsis Brammanis <ansis@mapbox.com>2019-04-01 22:38:22 -0400
committerAnsis Brammanis <ansis@mapbox.com>2019-04-01 22:38:22 -0400
commit097d96de61f7edaddce475c5a9b1f21e960a1396 (patch)
tree41fcb6e4cf4eec219456d19a4980bd71035d438d
parent6089031ce340816dadbb99c9eb22d2dd5c2a68a0 (diff)
downloadqtlocation-mapboxgl-097d96de61f7edaddce475c5a9b1f21e960a1396.tar.gz
fix segfault
-rw-r--r--platform/default/src/mbgl/gl/headless_frontend.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/platform/default/src/mbgl/gl/headless_frontend.cpp b/platform/default/src/mbgl/gl/headless_frontend.cpp
index f3dae2dbc9..c311e2df41 100644
--- a/platform/default/src/mbgl/gl/headless_frontend.cpp
+++ b/platform/default/src/mbgl/gl/headless_frontend.cpp
@@ -20,7 +20,13 @@ HeadlessFrontend::HeadlessFrontend(Size size_, float pixelRatio_, Scheduler& sch
asyncInvalidate([this] {
if (renderer && updateParameters) {
mbgl::BackendScope guard { backend };
- renderer->render(*updateParameters);
+
+ // onStyleImageMissing might be called during a render. The user implemented method
+ // could trigger a call to MGLRenderFrontend#update which overwrites `updateParameters`.
+ // Copy the shared pointer here so that the parameters aren't destroyed while `render(...)` is
+ // still using them.
+ auto updateParameters_ = updateParameters;
+ renderer->render(*updateParameters_);
}
}),
renderer(std::make_unique<Renderer>(backend, pixelRatio, scheduler, mode, programCacheDir, localFontFamily)) {