From fa9460390ac5bdf2cfbec7faf59c9371fd96811d Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Wed, 13 Aug 2014 16:57:26 -0400 Subject: [PATCH] Fixed segfaulting test for str_erase --- source/string/str.c | 3 ++- tests/test_str.c | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/source/string/str.c b/source/string/str.c index 472edb9..e915b48 100644 --- a/source/string/str.c +++ b/source/string/str.c @@ -100,9 +100,10 @@ str_t* str_erase(str_t* p_str, size_t start, size_t end) assert(start <= end); endbytes = (end >= p_str->size) ? 0 : (p_str->size - end); newsize = start + endbytes; - p_newstr = (str_t*)mem_allocate(sizeof(str_t) + newsize, NULL); + p_newstr = (str_t*)mem_allocate(sizeof(str_t) + newsize + 1, NULL); memcpy(&(p_newstr->data[0]), p_str->data, start); memcpy(&(p_newstr->data[start]), &(p_str->data[end]), endbytes); + p_newstr->size = newsize; p_newstr->data[newsize] = '\0'; return p_newstr; } diff --git a/tests/test_str.c b/tests/test_str.c index a797da4..54e3e64 100644 --- a/tests/test_str.c +++ b/tests/test_str.c @@ -178,6 +178,7 @@ TEST_SUITE(String) { str_t* p_str2 = str_erase(p_str1,0,1); CHECK(p_str1 != p_str2); CHECK(0 == strcmp(str_cstr(p_str2), "bc")); + CHECK(2 == str_size(p_str2)); mem_release(p_str1); mem_release(p_str2); } @@ -188,6 +189,7 @@ TEST_SUITE(String) { str_t* p_str2 = str_erase(p_str1,1,2); CHECK(p_str1 != p_str2); CHECK(0 == strcmp(str_cstr(p_str2), "ac")); + CHECK(2 == str_size(p_str2)); mem_release(p_str1); mem_release(p_str2); } @@ -198,6 +200,7 @@ TEST_SUITE(String) { str_t* p_str2 = str_erase(p_str1,2,3); CHECK(p_str1 != p_str2); CHECK(0 == strcmp(str_cstr(p_str2), "ab")); + CHECK(2 == str_size(p_str2)); mem_release(p_str1); mem_release(p_str2); } @@ -208,6 +211,7 @@ TEST_SUITE(String) { str_t* p_str2 = str_erase(p_str1,3,4); CHECK(p_str1 != p_str2); CHECK(0 == strcmp(str_cstr(p_str2), "abc")); + CHECK(3 == str_size(p_str2)); mem_release(p_str1); mem_release(p_str2); } @@ -218,6 +222,7 @@ TEST_SUITE(String) { str_t* p_str2 = str_erase(p_str1,1,1); CHECK(p_str1 != p_str2); CHECK(0 == strcmp(str_cstr(p_str2), "abc")); + CHECK(3 == str_size(p_str2)); mem_release(p_str1); mem_release(p_str2); } @@ -228,6 +233,7 @@ TEST_SUITE(String) { str_t* p_str2 = str_erase(p_str1, 0, str_size(p_str1)); CHECK(p_str1 != p_str2); CHECK(0 == strcmp(str_cstr(p_str2), "")); + CHECK(0 == str_size(p_str2)); mem_release(p_str1); mem_release(p_str2); } -- 2.52.0