diff --git a/hashmap.c b/hashmap.c index 11a8ca8d055dac3178d71bbc36ef3019634d99c7..e72342ef0a785b9008380692a37a67e913000786 100644 --- a/hashmap.c +++ b/hashmap.c @@ -140,7 +140,9 @@ char *hm_rm(hm_t *hm, const char *const key) { entry_before->next = entry_before->next->next; } - char *value = entry->value; + char *value = strdup(entry->value); + free(entry->key); + free(entry->value); free(entry); return value; } diff --git a/main.c b/main.c index a9d3093c89fe14b001dddf79bb59e8b5b8a167eb..13c3b34d37f4af8817dbcabe6217cfaca9e2af52 100644 --- a/main.c +++ b/main.c @@ -47,7 +47,8 @@ int main() { scanf("%s", key); clear_buffer(); - hm_rm(hm, key); + char *c = hm_rm(hm, key); + free(c); } else if (action == 4) { printf("Phone Number: "); scanf("%s", key);