diff --git a/src/core/surface/byte_buffer_queue.c b/src/core/surface/byte_buffer_queue.c index 2adda8056c1..9709a665bac 100644 --- a/src/core/surface/byte_buffer_queue.c +++ b/src/core/surface/byte_buffer_queue.c @@ -35,9 +35,9 @@ #include #include -static void bba_destroy(grpc_bbq_array *array) { +static void bba_destroy(grpc_bbq_array *array, size_t start_pos) { size_t i; - for (i = 0; i < array->count; i++) { + for (i = start_pos; i < array->count; i++) { grpc_byte_buffer_destroy(array->data[i]); } gpr_free(array->data); @@ -53,8 +53,8 @@ static void bba_push(grpc_bbq_array *a, grpc_byte_buffer *buffer) { } void grpc_bbq_destroy(grpc_byte_buffer_queue *q) { - bba_destroy(&q->filling); - bba_destroy(&q->draining); + bba_destroy(&q->filling, 0); + bba_destroy(&q->draining, q->drain_pos); } int grpc_bbq_empty(grpc_byte_buffer_queue *q) {