summaryrefslogtreecommitdiff
path: root/memory/unix
diff options
context:
space:
mode:
authorstriker <striker@13f79535-47bb-0310-9956-ffa450edef68>2002-02-09 14:08:39 +0000
committerstriker <striker@13f79535-47bb-0310-9956-ffa450edef68>2002-02-09 14:08:39 +0000
commit2a83c6801d3980cc2266813aa489825546f030bc (patch)
tree6df64b89d853c962bff51cf735ef5aa325337ad8 /memory/unix
parentaf1b6b39d8e9b8b8a1ff62a15d83d8141b52d5bf (diff)
downloadlibapr-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.c38
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)