diff options
author | Alain Magloire <alainm@gnu.org> | 2003-10-06 02:55:10 +0000 |
---|---|---|
committer | Alain Magloire <alainm@gnu.org> | 2003-10-06 02:55:10 +0000 |
commit | 34c80337c72928c94ece819fbff8ba42f8580dd3 (patch) | |
tree | acddfd34780358114f5a3c4a25d44ba504586a65 | |
parent | 787d810d3bb6b0b41977f64c3433b8b37aaf6c49 (diff) | |
download | mailutils-34c80337c72928c94ece819fbff8ba42f8580dd3.tar.gz mailutils-34c80337c72928c94ece819fbff8ba42f8580dd3.tar.bz2 |
* mailbox/list.c (list_destroy) : Call to list->destroy_item() when
the data is free().
(list_set_destroy_item): New function.
-rw-r--r-- | mailbox/list.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/mailbox/list.c b/mailbox/list.c index 416d31e5f..4e6fe4c78 100644 --- a/mailbox/list.c +++ b/mailbox/list.c @@ -62,6 +62,8 @@ list_destroy (list_t *plist) { previous = current; current = current->next; + if (list->destroy_item) + list->destroy_item (previous->item); free (previous); } monitor_unlock (list->monitor); @@ -293,3 +295,11 @@ list_do (list_t list, list_action_t * action, void *cbdata) monitor_unlock (list->monitor); return status; } + +int +list_set_destroy_item (list_t list, void (*destroy_item)(void *item)) +{ + if (list == NULL) + return EINVAL; + list->destroy_item = destroy_item; +} |