Terminate String memory with '\0'
This commit is contained in:
parent
49e4e853be
commit
c6f5200e69
37
src/String.c
37
src/String.c
@ -5,16 +5,10 @@ String * String_new(const char * s)
|
|||||||
{
|
{
|
||||||
String * new_st = (String *)malloc(sizeof(String));
|
String * new_st = (String *)malloc(sizeof(String));
|
||||||
size_t size = strlen(s);
|
size_t size = strlen(s);
|
||||||
if (size != 0u)
|
char * smem = (char *)malloc(size + 1u);
|
||||||
{
|
memcpy(smem, s, size);
|
||||||
char * smem = (char *)malloc(size);
|
smem[size] = '\0';
|
||||||
memcpy(smem, s, size);
|
new_st->value = smem;
|
||||||
new_st->value = smem;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
new_st->value = NULL;
|
|
||||||
}
|
|
||||||
new_st->size = size;
|
new_st->size = size;
|
||||||
return new_st;
|
return new_st;
|
||||||
}
|
}
|
||||||
@ -25,9 +19,10 @@ String * String_plus(const String * st, const char * s)
|
|||||||
size_t size1 = st->size;
|
size_t size1 = st->size;
|
||||||
size_t size2 = strlen(s);
|
size_t size2 = strlen(s);
|
||||||
size_t size = size1 + size2;
|
size_t size = size1 + size2;
|
||||||
char * smem = (char *)malloc(size);
|
char * smem = (char *)malloc(size + 1u);
|
||||||
memcpy(smem, st->value, size1);
|
memcpy(smem, st->value, size1);
|
||||||
memcpy(&smem[size1], s, size2);
|
memcpy(&smem[size1], s, size2);
|
||||||
|
smem[size] = '\0';
|
||||||
new_st->value = smem;
|
new_st->value = smem;
|
||||||
new_st->size = size;
|
new_st->size = size;
|
||||||
return new_st;
|
return new_st;
|
||||||
@ -37,17 +32,10 @@ String * String_concat(String * st, const char * s)
|
|||||||
{
|
{
|
||||||
size_t size2 = strlen(s);
|
size_t size2 = strlen(s);
|
||||||
size_t size = st->size + size2;
|
size_t size = st->size + size2;
|
||||||
char * smem = NULL;
|
char * smem = (char *)malloc(size + 1u);
|
||||||
if (size != 0u)
|
memcpy(smem, st->value, st->size);
|
||||||
{
|
memcpy(&smem[st->size], s, size2);
|
||||||
smem = (char *)malloc(size);
|
smem[size] = '\0';
|
||||||
memcpy(smem, st->value, st->size);
|
|
||||||
memcpy(&smem[st->size], s, size2);
|
|
||||||
}
|
|
||||||
if (st->value != NULL)
|
|
||||||
{
|
|
||||||
free(st->value);
|
|
||||||
}
|
|
||||||
st->value = smem;
|
st->value = smem;
|
||||||
st->size = size;
|
st->size = size;
|
||||||
return st;
|
return st;
|
||||||
@ -55,9 +43,6 @@ String * String_concat(String * st, const char * s)
|
|||||||
|
|
||||||
void String_free(String * st)
|
void String_free(String * st)
|
||||||
{
|
{
|
||||||
if (st->value != NULL)
|
free(st->value);
|
||||||
{
|
|
||||||
free(st->value);
|
|
||||||
}
|
|
||||||
free(st);
|
free(st);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user