Terminate String memory with '\0'

This commit is contained in:
Josh Holtrop 2018-04-07 09:34:25 -04:00
parent 49e4e853be
commit c6f5200e69

View File

@ -5,16 +5,10 @@ String * String_new(const char * s)
{
String * new_st = (String *)malloc(sizeof(String));
size_t size = strlen(s);
if (size != 0u)
{
char * smem = (char *)malloc(size);
memcpy(smem, s, size);
new_st->value = smem;
}
else
{
new_st->value = NULL;
}
char * smem = (char *)malloc(size + 1u);
memcpy(smem, s, size);
smem[size] = '\0';
new_st->value = smem;
new_st->size = size;
return new_st;
}
@ -25,9 +19,10 @@ String * String_plus(const String * st, const char * s)
size_t size1 = st->size;
size_t size2 = strlen(s);
size_t size = size1 + size2;
char * smem = (char *)malloc(size);
char * smem = (char *)malloc(size + 1u);
memcpy(smem, st->value, size1);
memcpy(&smem[size1], s, size2);
smem[size] = '\0';
new_st->value = smem;
new_st->size = size;
return new_st;
@ -37,17 +32,10 @@ String * String_concat(String * st, const char * s)
{
size_t size2 = strlen(s);
size_t size = st->size + size2;
char * smem = NULL;
if (size != 0u)
{
smem = (char *)malloc(size);
memcpy(smem, st->value, st->size);
memcpy(&smem[st->size], s, size2);
}
if (st->value != NULL)
{
free(st->value);
}
char * smem = (char *)malloc(size + 1u);
memcpy(smem, st->value, st->size);
memcpy(&smem[st->size], s, size2);
smem[size] = '\0';
st->value = smem;
st->size = size;
return st;
@ -55,9 +43,6 @@ String * String_concat(String * st, const char * s)
void String_free(String * st)
{
if (st->value != NULL)
{
free(st->value);
}
free(st->value);
free(st);
}