Prevent hang due to HandleUnexpectedSignal reentry
Change-Id: I0fe6a9b642e8d866aba893906c36bca6f1a4334e
diff --git a/src/logging.cc b/src/logging.cc
index 9dde963..12d1fa4 100644
--- a/src/logging.cc
+++ b/src/logging.cc
@@ -94,6 +94,15 @@
}
}
+LogMessageData::LogMessageData(const char* file, int line, LogSeverity severity, int error)
+ : file(file),
+ line_number(line),
+ severity(severity),
+ error(error) {
+ const char* last_slash = strrchr(file, '/');
+ file = (last_slash == NULL) ? file : last_slash + 1;
+}
+
LogMessage::~LogMessage() {
if (data_->severity < gMinimumLogSeverity) {
return; // No need to format something we're not going to output.
@@ -109,14 +118,14 @@
{
MutexLock mu(Thread::Current(), *Locks::logging_lock_);
if (msg.find('\n') == std::string::npos) {
- LogLine(msg.c_str());
+ LogLine(*data_, msg.c_str());
} else {
msg += '\n';
size_t i = 0;
while (i < msg.size()) {
size_t nl = msg.find('\n', i);
msg[nl] = '\0';
- LogLine(&msg[i]);
+ LogLine(*data_, &msg[i]);
i = nl + 1;
}
}