diff --git a/util/stdlib/strlcpy.cc b/util/stdlib/strlcpy.cc index 90d6d96e..be0dfb27 100644 --- a/util/stdlib/strlcpy.cc +++ b/util/stdlib/strlcpy.cc @@ -14,8 +14,27 @@ #include "util/stdlib/strlcpy.h" +#include "base/logging.h" +#include "build/build_config.h" + +#if defined(OS_WIN) && defined(WCHAR_T_IS_UTF16) +#include +#endif + namespace crashpad { +#if defined(OS_WIN) && defined(WCHAR_T_IS_UTF16) + +size_t c16lcpy(base::char16* destination, + const base::char16* source, + size_t length) { + HRESULT result = StringCchCopyW(destination, length, source); + CHECK(result == S_OK || result == STRSAFE_E_INSUFFICIENT_BUFFER); + return wcslen(source); +} + +#elif defined(WCHAR_T_IS_UTF32) + size_t c16lcpy(base::char16* destination, const base::char16* source, size_t length) { @@ -29,4 +48,6 @@ size_t c16lcpy(base::char16* destination, return source_length; } +#endif // WCHAR_T_IS_UTF32 + } // namespace crashpad