On 01/26/2018 10:42 PM, Yann Ylavic wrote: > On Fri, Jan 26, 2018 at 4:24 PM, <rpl...@apache.org> wrote: >> >> Modified: apr/apr/trunk/buckets/apr_buckets_alloc.c >> URL: >> http://svn.apache.org/viewvc/apr/apr/trunk/buckets/apr_buckets_alloc.c?rev=1822315&r1=1822314&r2=1822315&view=diff >> ============================================================================== >> --- apr/apr/trunk/buckets/apr_buckets_alloc.c (original) >> +++ apr/apr/trunk/buckets/apr_buckets_alloc.c Fri Jan 26 15:24:40 2018 >> @@ -45,12 +45,21 @@ struct apr_bucket_alloc_t { >> static apr_status_t alloc_cleanup(void *data) >> { >> apr_bucket_alloc_t *list = data; >> +#if APR_POOL_DEBUG >> + apr_allocator_t *allocator = NULL; >> +#endif >> + >> +#if APR_POOL_DEBUG >> + if (list->pool && list->allocator != >> apr_pool_allocator_get(list->pool)) { >> + allocator = list->allocator; >> + } >> +#endif >> >> apr_allocator_free(list->allocator, list->blocks); >> >> #if APR_POOL_DEBUG >> - if (list->pool && list->allocator != >> apr_pool_allocator_get(list->pool)) { >> - apr_allocator_destroy(list->allocator); >> + if (allocator) { >> + apr_allocator_destroy(allocator); >> } >> #endif > > Since apr_allocator_destroy() will free all its nodes, maybe we can simply: > > #if APR_POOL_DEBUG > if (list->pool && list->allocator != apr_pool_allocator_get(list->pool)) { > apr_allocator_destroy(allocator); > } > else > #endif > apr_allocator_free(list->allocator, list->blocks);
This should be possible as well, but I wanted to keep the code of the debug mode as close as possible to the non debug mode. Regards RĂ¼diger