diff options
author | Yann Ylavic <ylavic@apache.org> | 2015-03-13 14:11:41 +0000 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2015-03-13 14:11:41 +0000 |
commit | 98cc77eefbf467e318645b4dad2773ebcb7cb8b7 (patch) | |
tree | 92c7e30ddb38477b3c65f92104cb7661a6cc34eb /tables | |
parent | 54696b782af08ce49d2f9e5d3aac64490ff2b3d5 (diff) | |
download | apr-98cc77eefbf467e318645b4dad2773ebcb7cb8b7.tar.gz |
skiplist: check NULL compare function in apr_skiplist_find_compare() instead
of apr_skiplist_find() so that both functions act the same way in this case,
like insert[_compare]() and remove[_compare]().
Rearrange apr_skiplist_find() after apr_skiplist_find_compare() (still like
others, the former calling the latter), and also move apr_skiplist_getlist()
near to apr_skiplist_{next,previous}().
git-svn-id: https://svn.apache.org/repos/asf/apr/apr/trunk@1666458 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'tables')
-rw-r--r-- | tables/apr_skiplist.c | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/tables/apr_skiplist.c b/tables/apr_skiplist.c index 3bcc38b7a..6ceb7df9d 100644 --- a/tables/apr_skiplist.c +++ b/tables/apr_skiplist.c @@ -298,22 +298,6 @@ APR_DECLARE(void) apr_skiplist_add_index(apr_skiplist *sl, } } -APR_DECLARE(apr_skiplistnode *) apr_skiplist_getlist(apr_skiplist *sl) -{ - if (!sl->bottom) { - return NULL; - } - return sl->bottom->next; -} - -APR_DECLARE(void *) apr_skiplist_find(apr_skiplist *sl, void *data, apr_skiplistnode **iter) -{ - if (!sl->compare) { - return NULL; - } - return apr_skiplist_find_compare(sl, data, iter, sl->compare); -} - static int skiplisti_find_compare(apr_skiplist *sl, void *data, apr_skiplistnode **ret, apr_skiplist_compare comp) @@ -351,6 +335,12 @@ APR_DECLARE(void *) apr_skiplist_find_compare(apr_skiplist *sli, void *data, { apr_skiplistnode *m; apr_skiplist *sl; + if (!comp) { + if (iter) { + *iter = NULL; + } + return NULL; + } if (comp == sli->compare || !sli->index) { sl = sli; } @@ -371,6 +361,19 @@ APR_DECLARE(void *) apr_skiplist_find_compare(apr_skiplist *sli, void *data, return (m) ? m->data : NULL; } +APR_DECLARE(void *) apr_skiplist_find(apr_skiplist *sl, void *data, apr_skiplistnode **iter) +{ + return apr_skiplist_find_compare(sl, data, iter, sl->compare); +} + + +APR_DECLARE(apr_skiplistnode *) apr_skiplist_getlist(apr_skiplist *sl) +{ + if (!sl->bottom) { + return NULL; + } + return sl->bottom->next; +} APR_DECLARE(void *) apr_skiplist_next(apr_skiplist *sl, apr_skiplistnode **iter) { |