This commit is contained in:
Eelco Dolstra 2016-09-20 17:49:31 +02:00
parent f12d56b27b
commit beaefdf706
3 changed files with 5 additions and 8 deletions

View file

@ -98,11 +98,7 @@ struct CurlDownloader : public Downloader
{
assert(!done);
done = true;
try {
throw e;
} catch (...) {
callFailure(failure);
}
callFailure(failure, std::make_exception_ptr(e));
}
size_t writeCallback(void * contents, size_t size, size_t nmemb)

View file

@ -1230,10 +1230,10 @@ string base64Decode(const string & s)
}
void callFailure(const std::function<void(std::exception_ptr exc)> & failure)
void callFailure(const std::function<void(std::exception_ptr exc)> & failure, std::exception_ptr exc)
{
try {
failure(std::current_exception());
failure(exc);
} catch (std::exception & e) {
printMsg(lvlError, format("uncaught exception: %s") % e.what());
abort();

View file

@ -383,7 +383,8 @@ string get(const T & map, const string & key, const string & def = "")
/* Call failure with the current exception as argument. If failure
throws an exception, abort the program. */
void callFailure(const std::function<void(std::exception_ptr exc)> & failure);
void callFailure(const std::function<void(std::exception_ptr exc)> & failure,
std::exception_ptr exc = std::current_exception());
/* Evaluate the function f. If it returns a value, call success