diff --git a/include/nodejs/node_osrm_support.hpp b/include/nodejs/node_osrm_support.hpp index 2e924e2aacf..24b0415a301 100644 --- a/include/nodejs/node_osrm_support.hpp +++ b/include/nodejs/node_osrm_support.hpp @@ -56,25 +56,6 @@ template <> v8::Local inline render(const osrm::json::Object &result) return value; } -struct ResultException : public std::logic_error -{ - std::unique_ptr messagebuf; - - public: - ResultException(const char *code, const char *message) : std::logic_error(code) - { - messagebuf = std::make_unique(std::strlen(message) + 1); - std::strcpy(messagebuf.get(), message); - } - ResultException(const char *code) : std::logic_error(code) - { - messagebuf = std::make_unique(1); - messagebuf.get()[0] = 0; - } - - const char *message() { return messagebuf.get(); } -}; - inline void ParseResult(const osrm::Status &result_status, osrm::json::Object &result) { const auto code_iter = result.values.find("code"); @@ -87,6 +68,7 @@ inline void ParseResult(const osrm::Status &result_status, osrm::json::Object &r const auto message_iter = result.values.find("message"); if (message_iter != end_iter) { + // Concatenate the code: message so we don't lose details on errors const auto code = code_iter->second.get().value.c_str(); const auto message = message_iter->second.get().value.c_str(); auto buffer = @@ -94,7 +76,7 @@ inline void ParseResult(const osrm::Status &result_status, osrm::json::Object &r std::strcpy(buffer.get(), code); std::strcat(buffer.get(), ": "); std::strcat(buffer.get(), message); - throw ResultException(buffer.get()); + throw std::logic_error(buffer.get()); } else {