@@ -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
410413struct aws_s3_default_buffer_ticket * s_try_reserve (
0 commit comments