diff --git a/CMakeLists.txt b/CMakeLists.txt
index c40eef46969e334f62cff15c5dd26f8111bcc4f9..c392b014a7c1785bb3755494a6165f25724efebc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -146,6 +146,11 @@ if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
         -Wno-global-constructors
         -Wno-exit-time-destructors
     )
+    if (${CMAKE_CXX_COMPILER_VERSION} VERSION_GREATER 16)
+        target_compile_options(Vivy PRIVATE
+            -Wno-unsafe-buffer-usage
+        )
+    endif()
 elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
     target_compile_options(Vivy PRIVATE
         -Wno-subobject-linkage  # Kubat: Some proglems here, it seems they
diff --git a/src/Lib/Log.cc b/src/Lib/Log.cc
index 4cede87db6a84c071f4dc94cf543c05c55015909..cf7a94859fdf95f62c27db9002201b1e758f0fb5 100644
--- a/src/Lib/Log.cc
+++ b/src/Lib/Log.cc
@@ -277,12 +277,14 @@ LogMessage::operator<<(const std::string_view strv) noexcept
 LogMessage &
 LogMessage::operator<<(const char *str) noexcept
 {
-    const std::size_t length = strlen(str);
-    for (std::size_t i = 0; (i < length) && (indexInArray < messageBufferLength - 1);
-         ++i, ++indexInArray) {
-        textBuffer[indexInArray] = str[i];
+    if (str){
+        const std::size_t length = strlen(str);
+        for (std::size_t i = 0; (i < length) && (indexInArray < messageBufferLength - 1);
+             ++i, ++indexInArray) {
+            textBuffer[indexInArray] = str[i];
+        }
+        textBuffer[indexInArray] = '\0';
     }
-    textBuffer[indexInArray] = '\0';
     return *this;
 }