Fix dstr_own() when the dstr already holds a string.

This commit is contained in:
Nils O. Selåsdal
2015-05-06 21:33:23 +02:00
parent bb426bfecd
commit a7516141dd
2 changed files with 13 additions and 1 deletions
+1 -1
View File
@@ -176,7 +176,7 @@ void uc_dstr_own(struct DStr *str, char *restrict s)
size_t len = strlen(s); size_t len = strlen(s);
if (str->str) { if (str->str) {
free(str); free(str->str);
} }
str->len = len; str->len = len;
+12
View File
@@ -63,9 +63,20 @@ START_TEST (test_dstr_init)
ck_assert_int_eq(rc, 0); ck_assert_int_eq(rc, 0);
ck_assert_int_eq(str.len, 2); ck_assert_int_eq(str.len, 2);
ck_assert_str_eq(uc_dstr_str(&str), "He"); ck_assert_str_eq(uc_dstr_str(&str), "He");
uc_dstr_destroy(&str);
END_TEST END_TEST
START_TEST (test_dstr_own)
struct DStr str;
uc_dstr_init_str(&str, "init");
uc_dstr_own(&str, strdup("Hello !"));
ck_assert_int_eq(str.len, 7);
ck_assert_str_eq(uc_dstr_str(&str), "Hello !");
uc_dstr_destroy(&str);
END_TEST
START_TEST (test_dstr_own_steal) START_TEST (test_dstr_own_steal)
struct DStr str; struct DStr str;
char *s; char *s;
@@ -192,6 +203,7 @@ Suite *dstr_suite(void)
TCase *tc = tcase_create("dstr tests"); TCase *tc = tcase_create("dstr tests");
tcase_add_test(tc, test_dstr_basics); tcase_add_test(tc, test_dstr_basics);
tcase_add_test(tc, test_dstr_init); tcase_add_test(tc, test_dstr_init);
tcase_add_test(tc, test_dstr_own);
tcase_add_test(tc, test_dstr_own_steal); tcase_add_test(tc, test_dstr_own_steal);
tcase_add_test(tc, test_dstr_trim); tcase_add_test(tc, test_dstr_trim);
tcase_add_test(tc, test_dstr_replace); tcase_add_test(tc, test_dstr_replace);