On Tue, 15 Jun 2004, Joe Orton wrote:
> 2) allocate brigade structures using the bucket allocator
If you're going to do this, then surely you need to call
apr_pool_cleanup_register() somewhere?
===================================================================
RCS file: /home/cvs/apr-util/buckets/apr_brigade.c,v
retrieving revision 1.60
diff -u -r1.60 apr_brigade.c
--- buckets/apr_brigade.c 13 Feb 2004 09:55:25 -0000 1.60
+++ buckets/apr_brigade.c 15 Jun 2004 15:34:47 -0000
@@ -30,7 +30,9 @@
static apr_status_t brigade_cleanup(void *data)
{
- return apr_brigade_cleanup(data);
+ apr_status_t rv = apr_brigade_cleanup(data);
+ apr_bucket_free(data);
+ return rv;
}
APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data)
@@ -42,14 +44,12 @@
e = APR_BRIGADE_FIRST(b);
apr_bucket_delete(e);
}
- /* We don't need to free(bb) because it's allocated from a pool. */
return APR_SUCCESS;
}
APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b)
{
- apr_pool_cleanup_kill(b->p, b, brigade_cleanup);
- return apr_brigade_cleanup(b);
+ return apr_pool_cleanup_run(b->p, b, brigade_cleanup);
}
APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p,
@@ -57,7 +57,7 @@
{
apr_bucket_brigade *b;
- b = apr_palloc(p, sizeof(*b));
+ b = apr_bucket_alloc(sizeof *b, list);
b->p = p;
b->bucket_alloc = list;