diff --git a/CMakeLists.txt b/CMakeLists.txt index cfc6f028..805276e1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -220,6 +220,7 @@ set(common_includes ${TRACY_PUBLIC_DIR}/common/TracyQueue.hpp ${TRACY_PUBLIC_DIR}/common/TracySocket.hpp ${TRACY_PUBLIC_DIR}/common/TracyStackFrames.hpp + ${TRACY_PUBLIC_DIR}/common/TracyString.hpp ${TRACY_PUBLIC_DIR}/common/TracySystem.hpp ${TRACY_PUBLIC_DIR}/common/TracyTaggedUserlandAddress.hpp ${TRACY_PUBLIC_DIR}/common/TracyWinFamily.hpp diff --git a/meson.build b/meson.build index 56cfbed1..48b75edb 100644 --- a/meson.build +++ b/meson.build @@ -197,6 +197,7 @@ common_includes = [ 'public/common/TracyQueue.hpp', 'public/common/TracySocket.hpp', 'public/common/TracyStackFrames.hpp', + 'public/common/TracyString.hpp', 'public/common/TracySystem.hpp', 'public/common/TracyTaggedUserlandAddress.hpp', 'public/common/TracyWinFamily.hpp', diff --git a/public/common/TracyString.hpp b/public/common/TracyString.hpp new file mode 100644 index 00000000..b8e6a72f --- /dev/null +++ b/public/common/TracyString.hpp @@ -0,0 +1,31 @@ +#ifndef __TRACYSTRING_HPP__ +#define __TRACYSTRING_HPP__ + +#include +#include +#include + +namespace tracy +{ + +static inline size_t strzcpy( char* __restrict dst, const char* __restrict src, size_t dstSize ) +{ + assert( dstSize > 0 ); + + const auto srcSz = strlen( src ); + if( srcSz < dstSize ) + { + memcpy( dst, src, srcSz + 1 ); + return srcSz; + } + else + { + memcpy( dst, src, dstSize - 1 ); + dst[dstSize - 1] = '\0'; + return dstSize - 1; + } +} + +} + +#endif