diff --git a/CMakeLists.txt b/CMakeLists.txt index ea0c5bac422ca863279f98fab92c20c0600da0a9..f2b4bdf3193e63824255ef09279ae671bc300b13 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,6 +142,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; }