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

Reply via email to