diff options
Diffstat (limited to 'src/mbgl/sprite/sprite_parser.cpp')
-rw-r--r-- | src/mbgl/sprite/sprite_parser.cpp | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/src/mbgl/sprite/sprite_parser.cpp b/src/mbgl/sprite/sprite_parser.cpp index 66b5ec0606..96a883b0dd 100644 --- a/src/mbgl/sprite/sprite_parser.cpp +++ b/src/mbgl/sprite/sprite_parser.cpp @@ -84,26 +84,19 @@ bool getBoolean(const JSValue& value, const char* name, const bool def = false) } // namespace -SpriteParseResult parseSprite(const std::string& image, const std::string& json) { - Sprites sprites; - PremultipliedImage raster; - - try { - raster = decodeImage(image); - } catch (...) { - return std::current_exception(); - } +Sprites parseSprite(const std::string& image, const std::string& json) { + const PremultipliedImage raster = decodeImage(image); JSDocument doc; doc.Parse<0>(json.c_str()); - if (doc.HasParseError()) { std::stringstream message; message << "Failed to parse JSON: " << rapidjson::GetParseError_En(doc.GetParseError()) << " at offset " << doc.GetErrorOffset(); - return std::make_exception_ptr(std::runtime_error(message.str())); + throw std::runtime_error(message.str()); } else if (!doc.IsObject()) { - return std::make_exception_ptr(std::runtime_error("Sprite JSON root must be an object")); + throw std::runtime_error("Sprite JSON root must be an object"); } else { + Sprites sprites; for (const auto& property : doc.GetObject()) { const std::string name = { property.name.GetString(), property.name.GetStringLength() }; const JSValue& value = property.value; @@ -122,9 +115,8 @@ SpriteParseResult parseSprite(const std::string& image, const std::string& json) } } } + return sprites; } - - return sprites; } } // namespace mbgl |