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;
}
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);
}
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);
}
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);
}
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);
}
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);
}
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);
}