mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-02-24 07:21:29 +01:00
Fix JSON_USE_EXCEPTION=0 use case
This patch fixes the JSON_USE_EXCEPTION flag. Currently, due to the throwRuntimeError and throwLogicError methods implemented in json_value, even if JSON_USE_EXCEPTION is set to 0 jsoncpp will still throw. This breaks integration into projects with -fno-exceptions set, such as Chromium.
This commit is contained in:
parent
5b91551f39
commit
83cc92161b
@ -50,6 +50,7 @@
|
|||||||
*/
|
*/
|
||||||
namespace Json {
|
namespace Json {
|
||||||
|
|
||||||
|
#if JSON_USE_EXCEPTION
|
||||||
/** Base class for all exceptions we throw.
|
/** Base class for all exceptions we throw.
|
||||||
*
|
*
|
||||||
* We use nothing but these internally. Of course, STL can throw others.
|
* We use nothing but these internally. Of course, STL can throw others.
|
||||||
@ -85,6 +86,7 @@ class JSON_API LogicError : public Exception {
|
|||||||
public:
|
public:
|
||||||
LogicError(String const& msg);
|
LogicError(String const& msg);
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
/// used internally
|
/// used internally
|
||||||
JSONCPP_NORETURN void throwRuntimeError(String const& msg);
|
JSONCPP_NORETURN void throwRuntimeError(String const& msg);
|
||||||
|
@ -226,6 +226,7 @@ static inline void releaseStringValue(char* value, unsigned) { free(value); }
|
|||||||
|
|
||||||
namespace Json {
|
namespace Json {
|
||||||
|
|
||||||
|
#if JSON_USE_EXCEPTION
|
||||||
Exception::Exception(String msg) : msg_(std::move(msg)) {}
|
Exception::Exception(String msg) : msg_(std::move(msg)) {}
|
||||||
Exception::~Exception() JSONCPP_NOEXCEPT {}
|
Exception::~Exception() JSONCPP_NOEXCEPT {}
|
||||||
char const* Exception::what() const JSONCPP_NOEXCEPT { return msg_.c_str(); }
|
char const* Exception::what() const JSONCPP_NOEXCEPT { return msg_.c_str(); }
|
||||||
@ -237,6 +238,14 @@ JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
|
|||||||
JSONCPP_NORETURN void throwLogicError(String const& msg) {
|
JSONCPP_NORETURN void throwLogicError(String const& msg) {
|
||||||
throw LogicError(msg);
|
throw LogicError(msg);
|
||||||
}
|
}
|
||||||
|
# else // !JSON_USE_EXCEPTION
|
||||||
|
JSONCPP_NORETURN void throwRuntimeError(String const& msg) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
JSONCPP_NORETURN void throwLogicError(String const& msg) {
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////
|
// //////////////////////////////////////////////////////////////////
|
||||||
// //////////////////////////////////////////////////////////////////
|
// //////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
x
Reference in New Issue
Block a user