Fix dstr_own() when the dstr already holds a string.
This commit is contained in:
+1
-1
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user