From 65835be72273fc0f6016f24ad2344efd54ff1091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Mon, 4 Feb 2019 19:23:58 +0100 Subject: [PATCH] Allow logging of char* null pointer. Bug: chromium:927027 Change-Id: I220c11b1b2dd2921c814a361009d008e74245af3 Reviewed-on: https://webrtc-review.googlesource.com/c/121426 Reviewed-by: Karl Wiberg Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/master@{#26557} --- rtc_base/logging.cc | 6 ++++-- rtc_base/logging_unittest.cc | 8 ++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/rtc_base/logging.cc b/rtc_base/logging.cc index 74128fb8d6..f78cd88f94 100644 --- a/rtc_base/logging.cc +++ b/rtc_base/logging.cc @@ -531,9 +531,11 @@ void Log(const LogArgType* fmt, ...) { case LogArgType::kLongDouble: log_message.stream() << va_arg(args, long double); break; - case LogArgType::kCharP: - log_message.stream() << va_arg(args, const char*); + case LogArgType::kCharP: { + const char* s = va_arg(args, const char*); + log_message.stream() << (s ? s : "(null)"); break; + } case LogArgType::kStdString: log_message.stream() << *va_arg(args, const std::string*); break; diff --git a/rtc_base/logging_unittest.cc b/rtc_base/logging_unittest.cc index 4e64209cf2..e49440dce1 100644 --- a/rtc_base/logging_unittest.cc +++ b/rtc_base/logging_unittest.cc @@ -162,13 +162,14 @@ TEST(LogTest, SingleStream) { std::string s1 = "char*"; std::string s2 = "std::string"; std::string s3 = "absl::stringview"; - + const char* null_string = nullptr; void* p = reinterpret_cast(0xabcd); // Log all suported types(except doubles/floats) as a sanity-check. RTC_LOG(LS_INFO) << "|" << i << "|" << l << "|" << ll << "|" << u << "|" << ul << "|" << ull << "|" << s1.c_str() << "|" << s2 << "|" - << absl::string_view(s3) << "|" << p << "|"; + << absl::string_view(s3) << "|" << p << "|" << null_string + << "|"; // Signed integers EXPECT_NE(std::string::npos, str.find("|1|")); @@ -188,6 +189,9 @@ TEST(LogTest, SingleStream) { // void* EXPECT_NE(std::string::npos, str.find("|abcd|")); + // null char* + EXPECT_NE(std::string::npos, str.find("|(null)|")); + LogMessage::RemoveLogToStream(&stream); EXPECT_EQ(LS_NONE, LogMessage::GetLogToStream(&stream)); EXPECT_EQ(sev, LogMessage::GetLogToStream(nullptr));