diff --git a/src/dstr.c b/src/dstr.c index 90e49bc..a5ae33f 100644 --- a/src/dstr.c +++ b/src/dstr.c @@ -176,7 +176,7 @@ void uc_dstr_own(struct DStr *str, char *restrict s) size_t len = strlen(s); if (str->str) { - free(str); + free(str->str); } str->len = len; diff --git a/test/test_dstr.c b/test/test_dstr.c index f30a0a4..1c5e1a1 100644 --- a/test/test_dstr.c +++ b/test/test_dstr.c @@ -63,9 +63,20 @@ START_TEST (test_dstr_init) ck_assert_int_eq(rc, 0); ck_assert_int_eq(str.len, 2); ck_assert_str_eq(uc_dstr_str(&str), "He"); + uc_dstr_destroy(&str); 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) struct DStr str; char *s; @@ -192,6 +203,7 @@ Suite *dstr_suite(void) TCase *tc = tcase_create("dstr tests"); tcase_add_test(tc, test_dstr_basics); 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_trim); tcase_add_test(tc, test_dstr_replace);