summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buckets/apr_brigade.c19
1 files changed, 7 insertions, 12 deletions
diff --git a/buckets/apr_brigade.c b/buckets/apr_brigade.c
index b535c9e5..41fcd761 100644
--- a/buckets/apr_brigade.c
+++ b/buckets/apr_brigade.c
@@ -85,18 +85,16 @@ APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data)
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_status_t rv;
- if (b->p) {
- apr_pool_cleanup_kill(b->p, b, brigade_cleanup);
- }
- rv = apr_brigade_cleanup(b);
- apr_bucket_free(b);
- return rv;
+ apr_pool_cleanup_kill(b->p, b, brigade_cleanup);
+ return apr_brigade_cleanup(b);
}
APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p,
@@ -104,16 +102,13 @@ APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p,
{
apr_bucket_brigade *b;
- b = apr_bucket_alloc(sizeof(*b), list);
+ b = apr_palloc(p, sizeof(*b));
b->p = p;
b->bucket_alloc = list;
APR_RING_INIT(&b->list, apr_bucket, link);
- if (p) {
- apr_pool_cleanup_register(b->p, b, brigade_cleanup,
- apr_pool_cleanup_null);
- }
+ apr_pool_cleanup_register(b->p, b, brigade_cleanup, apr_pool_cleanup_null);
return b;
}