From 509c461498f0e68a62c004778df890d56ebb2a09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Ankarstr=C3=B6m?= Date: Mon, 15 Aug 2022 22:18:10 +0200 Subject: Fix bug in Strcpy. Add Sprintf, Wcscpy. --- c/util.h | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/c/util.h b/c/util.h index d58301b..d233ce1 100644 --- a/c/util.h +++ b/c/util.h @@ -12,12 +12,30 @@ inline int Swprintf(wchar_t (&buf)[N], const wchar_t* const fmt, T... xs) return _snwprintf_s(buf, N, _TRUNCATE, fmt, xs...); } +/* Format static narrow string. */ +template +inline int Sprintf(char (&buf)[N], const char* const fmt, T... xs) +{ + return _snprintf_s(buf, N, _TRUNCATE, fmt, xs...); +} + +/* Copy to static wide string buffer. */ +template +inline wchar_t* Wcscpy(wchar_t (&dst)[N], const wchar_t* const src) +{ + const size_t len = std::min(N, wcslen(src)+1); + memcpy(dst, src, len*sizeof(wchar_t)); + dst[len-1] = 0; + return dst; +} + /* Copy to static narrow string buffer. */ template inline char* Strcpy(char (&dst)[N], const char* const src) { - memcpy(dst, src, std::min(N, strlen(src))); - dst[N-1] = 0; + const size_t len = std::min(N, strlen(src)+1); + memcpy(dst, src, len); + dst[len-1] = 0; return dst; } -- cgit v1.2.3