summaryrefslogtreecommitdiff
path: root/src/mbgl/sprite/sprite_parser.cpp
diff options
context:
space:
mode:
authorJohn Firebaugh <john.firebaugh@gmail.com>2015-12-22 15:10:24 -0800
committerJohn Firebaugh <john.firebaugh@gmail.com>2015-12-23 12:50:42 -0800
commit16de579d7cfc2960793cbcb5e95741f22ab73768 (patch)
treeb4c3b7651f605e3d3dd61b469f61036bd2c4dcc3 /src/mbgl/sprite/sprite_parser.cpp
parent7bd4745cf10c504a4899a37016e87bce45e51472 (diff)
downloadqtlocation-mapboxgl-16de579d7cfc2960793cbcb5e95741f22ab73768.tar.gz
[core] Rationalize error handling for resource loading
* Standardize on std::exception_ptr as the error representation (fixes #2854). * Don't format textual strings at the error source; pass on the constituent data via observer method parameters instead. * Use the null object pattern to simplify observer notification code. * Further refactoring for ResourceLoading tests.
Diffstat (limited to 'src/mbgl/sprite/sprite_parser.cpp')
-rw-r--r--src/mbgl/sprite/sprite_parser.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/mbgl/sprite/sprite_parser.cpp b/src/mbgl/sprite/sprite_parser.cpp
index 59dce93241..1aa95310c5 100644
--- a/src/mbgl/sprite/sprite_parser.cpp
+++ b/src/mbgl/sprite/sprite_parser.cpp
@@ -106,7 +106,7 @@ SpriteParseResult parseSprite(const std::string& image, const std::string& json)
try {
raster = decodeImage(image);
} catch (...) {
- return std::string("Could not parse sprite image");
+ return std::current_exception();
}
JSDocument doc;
@@ -115,9 +115,9 @@ SpriteParseResult parseSprite(const std::string& image, const std::string& json)
if (doc.HasParseError()) {
std::stringstream message;
message << "Failed to parse JSON: " << rapidjson::GetParseError_En(doc.GetParseError()) << " at offset " << doc.GetErrorOffset();
- return message.str();
+ return std::make_exception_ptr(std::runtime_error(message.str()));
} else if (!doc.IsObject()) {
- return std::string("Sprite JSON root must be an object");
+ return std::make_exception_ptr(std::runtime_error("Sprite JSON root must be an object"));
} else {
for (JSValue::ConstMemberIterator itr = doc.MemberBegin(); itr != doc.MemberEnd(); ++itr) {
const std::string name = { itr->name.GetString(), itr->name.GetStringLength() };