summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlain Magloire <alainm@gnu.org>2003-10-06 02:55:10 +0000
committerAlain Magloire <alainm@gnu.org>2003-10-06 02:55:10 +0000
commit34c80337c72928c94ece819fbff8ba42f8580dd3 (patch)
treeacddfd34780358114f5a3c4a25d44ba504586a65
parent787d810d3bb6b0b41977f64c3433b8b37aaf6c49 (diff)
downloadmailutils-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.c10
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;
+}

Return to:

Send suggestions and report system problems to the System administrator.