From c6f5200e696877585f2de6cc7e493b6a902041ba Mon Sep 17 00:00:00 2001 From: Josh Holtrop Date: Sat, 7 Apr 2018 09:34:25 -0400 Subject: [PATCH] Terminate String memory with '\0' --- src/String.c | 37 +++++++++++-------------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/src/String.c b/src/String.c index 7e57568..d597ec8 100644 --- a/src/String.c +++ b/src/String.c @@ -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); }