summaryrefslogtreecommitdiff
path: root/tables
diff options
context:
space:
mode:
authorYann Ylavic <ylavic@apache.org>2015-03-13 14:11:41 +0000
committerYann Ylavic <ylavic@apache.org>2015-03-13 14:11:41 +0000
commit98cc77eefbf467e318645b4dad2773ebcb7cb8b7 (patch)
tree92c7e30ddb38477b3c65f92104cb7661a6cc34eb /tables
parent54696b782af08ce49d2f9e5d3aac64490ff2b3d5 (diff)
downloadapr-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.c35
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)
{