LibC: Fix strndup
I did not null terminate short strndup copies :D
This commit is contained in:
parent
d1c3d3d5aa
commit
17014bb8de
|
@ -189,27 +189,28 @@ int strcoll(const char* s1, const char* s2)
|
||||||
|
|
||||||
char* strdup(const char* str)
|
char* strdup(const char* str)
|
||||||
{
|
{
|
||||||
const size_t size = strlen(str) + 1;
|
const size_t size = strlen(str);
|
||||||
|
|
||||||
char* new_str = (char*)malloc(size);
|
char* new_str = (char*)malloc(size + 1);
|
||||||
if (new_str == nullptr)
|
if (new_str == nullptr)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
memcpy(new_str, str, size);
|
memcpy(new_str, str, size);
|
||||||
|
new_str[size] = '\0';
|
||||||
return new_str;
|
return new_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
char* strndup(const char* str, size_t size)
|
char* strndup(const char* str, size_t size)
|
||||||
{
|
{
|
||||||
if (strlen(str) < size)
|
if (size_t len = strlen(str); len < size)
|
||||||
size = strlen(str);
|
size = len;
|
||||||
size += 1;
|
|
||||||
|
|
||||||
char* new_str = (char*)malloc(size);
|
char* new_str = (char*)malloc(size + 1);
|
||||||
if (new_str == nullptr)
|
if (new_str == nullptr)
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
memcpy(new_str, str, size);
|
memcpy(new_str, str, size);
|
||||||
|
new_str[size] = '\0';
|
||||||
return new_str;
|
return new_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue