From a7df0781f823606ac439ba0e2769abac5f82c421 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Tue, 5 May 2015 13:34:06 -0700 Subject: [PATCH] Don't crash if ResourceLoader::_sprite is null --- src/mbgl/map/resource_loader.cpp | 4 +++- test/miscellaneous/map.cpp | 22 ++++++++++++++++++++++ test/test.gypi | 1 + 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/miscellaneous/map.cpp diff --git a/src/mbgl/map/resource_loader.cpp b/src/mbgl/map/resource_loader.cpp index b3aa35b74..fba61cc64 100644 --- a/src/mbgl/map/resource_loader.cpp +++ b/src/mbgl/map/resource_loader.cpp @@ -22,7 +22,9 @@ ResourceLoader::~ResourceLoader() { source->setObserver(nullptr); } - sprite_->setObserver(nullptr); + if (sprite_) { + sprite_->setObserver(nullptr); + } } void ResourceLoader::setObserver(Observer* observer) { diff --git a/test/miscellaneous/map.cpp b/test/miscellaneous/map.cpp new file mode 100644 index 000000000..5834addb7 --- /dev/null +++ b/test/miscellaneous/map.cpp @@ -0,0 +1,22 @@ +#include "../fixtures/util.hpp" + +#include +#include +#include +#include +#include +#include + +using namespace mbgl; + +TEST(MapContext, DoubleStyleLoad) { + util::RunLoop runLoop(uv_default_loop()); + std::shared_ptr display = std::make_shared(); + HeadlessView view(display, 512, 512, 1); + DefaultFileSource fileSource(nullptr); + MapData data(view, MapMode::Continuous); + MapContext context(uv_default_loop(), view, fileSource, data, false); + + context.setStyleJSON("", ""); + context.setStyleJSON("", ""); +} diff --git a/test/test.gypi b/test/test.gypi index 1c81b76c7..d438a88bf 100644 --- a/test/test.gypi +++ b/test/test.gypi @@ -43,6 +43,7 @@ 'miscellaneous/comparisons.cpp', 'miscellaneous/enums.cpp', 'miscellaneous/functions.cpp', + 'miscellaneous/map.cpp', 'miscellaneous/mapbox.cpp', 'miscellaneous/merge_lines.cpp', 'miscellaneous/rotation_range.cpp',