diff options
Diffstat (limited to 'src/google/protobuf/stubs/common.cc')
-rw-r--r-- | src/google/protobuf/stubs/common.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/google/protobuf/stubs/common.cc b/src/google/protobuf/stubs/common.cc index 1e2d68d2..34a7d139 100644 --- a/src/google/protobuf/stubs/common.cc +++ b/src/google/protobuf/stubs/common.cc @@ -177,6 +177,12 @@ LogMessage::LogMessage(LogLevel level, const char* filename, int line) : level_(level), filename_(filename), line_(line) {} LogMessage::~LogMessage() {} +#if defined(_MSC_VER) && defined(_CPPUNWIND) + #define PROTOBUF_USE_EXCEPTIONS +#elif defined(__EXCEPTIONS) + #define PROTOBUF_USE_EXCEPTIONS +#endif + void LogMessage::Finish() { bool suppress = false; @@ -191,10 +197,16 @@ void LogMessage::Finish() { } if (level_ == LOGLEVEL_FATAL) { +#ifdef PROTOBUF_USE_EXCEPTIONS + throw -1; +#else abort(); +#endif } } +#undef PROTOBUF_USE_EXCEPTIONS + void LogFinisher::operator=(LogMessage& other) { other.Finish(); } |