summaryrefslogtreecommitdiff
path: root/src/mbgl/style/parser.cpp
diff options
context:
space:
mode:
authorThiago Marcos P. Santos <thiago@mapbox.com>2016-08-24 17:38:06 +0300
committerThiago Marcos P. Santos <thiago@mapbox.com>2016-08-24 20:02:31 +0300
commitc98f4f476bd590bdfd78409d428459e40347302a (patch)
tree6c4bc14970ba0bf199e36156e3bc529a6d054a61 /src/mbgl/style/parser.cpp
parent646528bc53c37950b556be825de1ba9fa5303be3 (diff)
downloadqtlocation-mapboxgl-c98f4f476bd590bdfd78409d428459e40347302a.tar.gz
[core] Emit MapChangeDidFailLoadingMap when the style cannot be loaded or parsed
Currently this signal is never emitted, which can cause the Still mode to starve in case of an invalid style or failed request.
Diffstat (limited to 'src/mbgl/style/parser.cpp')
-rw-r--r--src/mbgl/style/parser.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/mbgl/style/parser.cpp b/src/mbgl/style/parser.cpp
index bc05b5484a..e53fac2667 100644
--- a/src/mbgl/style/parser.cpp
+++ b/src/mbgl/style/parser.cpp
@@ -14,24 +14,27 @@
#include <algorithm>
#include <set>
+#include <sstream>
namespace mbgl {
namespace style {
Parser::~Parser() = default;
-void Parser::parse(const std::string& json) {
+StyleParseResult Parser::parse(const std::string& json) {
rapidjson::GenericDocument<rapidjson::UTF8<>, rapidjson::CrtAllocator> document;
document.Parse<0>(json.c_str());
if (document.HasParseError()) {
- Log::Error(Event::ParseStyle, "Error parsing style JSON at %i: %s", document.GetErrorOffset(), rapidjson::GetParseError_En(document.GetParseError()));
- return;
+ std::stringstream message;
+ message << document.GetErrorOffset() << " - "
+ << rapidjson::GetParseError_En(document.GetParseError());
+
+ return std::make_exception_ptr(std::runtime_error(message.str()));
}
if (!document.IsObject()) {
- Log::Error(Event::ParseStyle, "Style JSON must be an object");
- return;
+ return std::make_exception_ptr(std::runtime_error("style must be an object"));
}
if (document.HasMember("version")) {
@@ -100,6 +103,8 @@ void Parser::parse(const std::string& json) {
glyphURL = { glyphs.GetString(), glyphs.GetStringLength() };
}
}
+
+ return nullptr;
}
void Parser::parseSources(const JSValue& value) {