vkd3d-common: Add vkd3d_strdup_n

There is no strndup on Windows.

Signed-off-by: Joshua Ashton <joshua@froggi.es>
This commit is contained in:
Joshua Ashton 2021-02-25 06:55:10 +00:00 committed by Hans-Kristian Arntzen
parent 26f5745ea1
commit a76daad03f
2 changed files with 18 additions and 0 deletions

View File

@ -32,6 +32,7 @@ bool vkd3d_export_strequal(const WCHAR *a, const WCHAR *b);
bool vkd3d_export_strequal_substr(const WCHAR *a, size_t n, const WCHAR *b);
char *vkd3d_strdup(const char *str);
char *vkd3d_strdup_n(const char *str, size_t n);
WCHAR *vkd3d_wstrdup(const WCHAR *str);
WCHAR *vkd3d_wstrdup_n(const WCHAR *str, size_t n);

View File

@ -37,6 +37,23 @@ char *vkd3d_strdup(const char *str)
return duped;
}
char *vkd3d_strdup_n(const char *str, size_t n)
{
char *duped;
size_t len;
len = strnlen(str, n);
duped = vkd3d_malloc(len + 1);
if (duped)
{
memcpy(duped, str, len);
duped[len] = '\0';
}
return duped;
}
WCHAR *vkd3d_wstrdup(const WCHAR *str)
{
WCHAR *duped;