diff options
author | striker <striker@13f79535-47bb-0310-9956-ffa450edef68> | 2002-02-09 14:08:39 +0000 |
---|---|---|
committer | striker <striker@13f79535-47bb-0310-9956-ffa450edef68> | 2002-02-09 14:08:39 +0000 |
commit | 2a83c6801d3980cc2266813aa489825546f030bc (patch) | |
tree | 6df64b89d853c962bff51cf735ef5aa325337ad8 /memory/unix | |
parent | af1b6b39d8e9b8b8a1ff62a15d83d8141b52d5bf (diff) | |
download | libapr-2a83c6801d3980cc2266813aa489825546f030bc.tar.gz |
Rename apr_find_pool to apr_pool_find. Implement it in terms of
apr_pool_walk_tree (which makes it thread safe).
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@62939 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'memory/unix')
-rw-r--r-- | memory/unix/apr_pools.c | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/memory/unix/apr_pools.c b/memory/unix/apr_pools.c index 6828ade51..7be2fff1e 100644 --- a/memory/unix/apr_pools.c +++ b/memory/unix/apr_pools.c @@ -1402,37 +1402,37 @@ APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub) { } -static apr_pool_t *find_pool(apr_pool_t *pool, const void *mem) +static int pool_find(apr_pool_t *pool, void *data) { - apr_pool_t *found; + void **pmem = (void **)data; debug_node_t *node; apr_uint32_t index; - while (pool) { - node = pool->nodes; - - while (node) { - for (index = 0; index < node->index; index++) { - if (node->beginp[index] <= mem && - node->endp[index] > mem) - return pool; - } + node = pool->nodes; - node = node->next; + while (node) { + for (index = 0; index < node->index; index++) { + if (node->beginp[index] <= *pmem && + node->endp[index] > *pmem) { + *pmem = pool; + return 1; + } } - if ((found = find_pool(pool->child, mem)) != NULL) - return found; - - pool = pool->sibling; + node = node->next; } - return NULL; + return 0; } -APR_DECLARE(apr_pool_t *) apr_find_pool(const void *mem) +APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem) { - return find_pool(global_pool, mem); + void *pool = mem; + + if (apr_pool_walk_tree(global_pool, pool_find, &pool)) + return pool; + + return NULL; } static int pool_num_bytes(apr_pool_t *pool, void *data) |