]> git.mdlowis.com Git - projs/libcds.git/commitdiff
Fixed segfaulting test for str_erase
authorMichael D. Lowis <mike.lowis@gentex.com>
Wed, 13 Aug 2014 20:57:26 +0000 (16:57 -0400)
committerMichael D. Lowis <mike.lowis@gentex.com>
Wed, 13 Aug 2014 20:57:26 +0000 (16:57 -0400)
source/string/str.c
tests/test_str.c

index 472edb9136827c75f47287c288f04cd336487796..e915b4825b999de0a495732e482d48b45e210111 100644 (file)
@@ -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;
 }
index a797da4ebdc4637d2d5c8638f5cc33ce94b2af6c..54e3e64166addecdc4ac98e00772c25e4d41b0a4 100644 (file)
@@ -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);
     }