From: Jim Jagielski Date: Mon, 19 Nov 2012 16:28:13 +0000 (+0000) Subject: skiplist_destroy() is new-ish X-Git-Tag: 2.5.0-alpha~6096 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5f30e9a2e80800e9fecfbc13bb53375de617029e;p=thirdparty%2Fapache%2Fhttpd.git skiplist_destroy() is new-ish git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1411279 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/mpm/eventopt/skiplist.c b/server/mpm/eventopt/skiplist.c index 26ace19d75f..39a927f9cb8 100644 --- a/server/mpm/eventopt/skiplist.c +++ b/server/mpm/eventopt/skiplist.c @@ -663,6 +663,19 @@ void *skiplist_peek(Skiplist *a) return data; } +static void skiplisti_destroy(void *vsl) +{ + skiplist_destroy((Skiplist *) vsl, NULL); + skiplist_free((Skiplist *) vsl, vsl); +} + +void skiplist_destroy(Skiplist *sl, FreeFunc myfree) +{ + while (skiplist_pop(sl->index, skiplisti_destroy) != NULL) + ; + skiplist_remove_all(sl, myfree); +} + Skiplist *skiplist_merge(Skiplist *sl1, Skiplist *sl2) { /* Check integrity! */ diff --git a/server/mpm/eventopt/skiplist.h b/server/mpm/eventopt/skiplist.h index 50543acb410..42447c7283d 100644 --- a/server/mpm/eventopt/skiplist.h +++ b/server/mpm/eventopt/skiplist.h @@ -98,6 +98,8 @@ int skiplisti_remove(Skiplist *sl, skiplistnode *m, FreeFunc myfree); void skiplist_remove_all(Skiplist *sl, FreeFunc myfree); +void skiplist_destroy(Skiplist *sl, FreeFunc myfree); + #if 0 int skiplisti_find_compare(Skiplist *sl, void *data,