summaryrefslogtreecommitdiff
path: root/buckets
diff options
context:
space:
mode:
Diffstat (limited to 'buckets')
-rw-r--r--buckets/apr_brigade.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/buckets/apr_brigade.c b/buckets/apr_brigade.c
index 4519f6419..2b5893077 100644
--- a/buckets/apr_brigade.c
+++ b/buckets/apr_brigade.c
@@ -39,6 +39,8 @@ APR_DECLARE(apr_status_t) apr_brigade_cleanup(void *data)
apr_bucket_brigade *b = data;
apr_bucket *e;
+ APR_BRIGADE_CHECK_CONSISTENCY(b);
+
while (!APR_BRIGADE_EMPTY(b)) {
e = APR_BRIGADE_FIRST(b);
apr_bucket_delete(e);
@@ -49,8 +51,22 @@ APR_DECLARE(apr_status_t) apr_brigade_cleanup(void *data)
APR_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);
+#ifndef APR_BUCKET_DEBUG
+ return apr_pool_cleanup_run(b->p, b, brigade_cleanup);
+#else
+ apr_status_t rv;
+
+ APR_BRIGADE_CHECK_CONSISTENCY(b);
+
+ rv = apr_pool_cleanup_run(b->p, b, brigade_cleanup);
+
+ /* Trigger consistency check failures if the brigade is
+ * re-used. */
+ b->p = NULL;
+ b->bucket_alloc = NULL;
+
+ return rv;
+#endif
}
APR_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p,