| Index: third_party/re2/util/logging.h
|
| diff --git a/third_party/re2/util/logging.h b/third_party/re2/util/logging.h
|
| index 53f7198c8ac3e8d81cfb4ca1801ec3031c3e2db9..7302ea691fa5daa13af922c4b28b51471a146f33 100644
|
| --- a/third_party/re2/util/logging.h
|
| +++ b/third_party/re2/util/logging.h
|
| @@ -53,17 +53,24 @@
|
|
|
| class LogMessage {
|
| public:
|
| - LogMessage(const char* file, int line) {
|
| + LogMessage(const char* file, int line) : flushed_(false) {
|
| stream() << file << ":" << line << ": ";
|
| }
|
| - ~LogMessage() {
|
| + void Flush() {
|
| stream() << "\n";
|
| string s = str_.str();
|
| if(write(2, s.data(), s.size()) < 0) {} // shut up gcc
|
| + flushed_ = true;
|
| + }
|
| + ~LogMessage() {
|
| + if (!flushed_) {
|
| + Flush();
|
| + }
|
| }
|
| ostream& stream() { return str_; }
|
|
|
| private:
|
| + bool flushed_;
|
| std::ostringstream str_;
|
| DISALLOW_EVIL_CONSTRUCTORS(LogMessage);
|
| };
|
| @@ -73,7 +80,7 @@ class LogMessageFatal : public LogMessage {
|
| LogMessageFatal(const char* file, int line)
|
| : LogMessage(file, line) { }
|
| ~LogMessageFatal() {
|
| - std::cerr << "\n";
|
| + Flush();
|
| abort();
|
| }
|
| private:
|
|
|