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 <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26557}
diff --git a/rtc_base/logging.cc b/rtc_base/logging.cc
index 74128fb..f78cd88 100644
--- a/rtc_base/logging.cc
+++ b/rtc_base/logging.cc
@@ -531,9 +531,11 @@
       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 4e64209..e49440d 100644
--- a/rtc_base/logging_unittest.cc
+++ b/rtc_base/logging_unittest.cc
@@ -162,13 +162,14 @@
   std::string s1 = "char*";
   std::string s2 = "std::string";
   std::string s3 = "absl::stringview";
-
+  const char* null_string = nullptr;
   void* p = reinterpret_cast<void*>(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 @@
   // 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));