Skip to content

Commit 9db8ace

Browse files
dont release withing pending
1 parent 5946dc6 commit 9db8ace

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

source/s3_default_buffer_pool.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,6 +389,8 @@ static void s_aws_ticket_wrapper_destroy(void *data) {
389389
aws_mem_release(buffer_pool->base_allocator, ticket);
390390
aws_mem_release(buffer_pool->base_allocator, ticket_wrapper);
391391

392+
struct aws_future_s3_buffer_ticket *pending_ticket_future = NULL;
393+
392394
if (!aws_linked_list_empty(&buffer_pool->pending_reserves)) {
393395
struct aws_linked_list_node *node = aws_linked_list_front(&buffer_pool->pending_reserves);
394396
struct s3_pending_reserve *pending_reserve = AWS_CONTAINER_OF(node, struct s3_pending_reserve, node);
@@ -397,14 +399,15 @@ static void s_aws_ticket_wrapper_destroy(void *data) {
397399

398400
if (new_ticket != NULL) {
399401
struct aws_s3_buffer_ticket *new_ticket_wrapper = s_wrap_default_ticket(new_ticket);
400-
aws_future_s3_buffer_ticket_set_result_by_move(pending_reserve->ticket_future, &new_ticket_wrapper);
401-
aws_future_s3_buffer_ticket_release(pending_reserve->ticket_future);
402+
pending_ticket_future = pending_reserve->ticket_future;
403+
aws_future_s3_buffer_ticket_set_result_by_move(pending_ticket_future, &new_ticket_wrapper);
402404
aws_linked_list_pop_front(&buffer_pool->pending_reserves);
403405
aws_mem_release(buffer_pool->base_allocator, pending_reserve);
404406
}
405407
}
406408

407409
aws_mutex_unlock(&buffer_pool->mutex);
410+
aws_future_s3_buffer_ticket_release(pending_ticket_future);
408411
}
409412

410413
struct aws_s3_default_buffer_ticket *s_try_reserve(

0 commit comments

Comments
 (0)