Unref the tail, not the original slice

pull/10495/head
yang-g 8 years ago
parent e7369020a9
commit 512b6371f4
  1. 9
      src/core/lib/security/transport/security_handshaker.c

@ -285,12 +285,11 @@ static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx,
if (num_left_overs > 0) { if (num_left_overs > 0) {
/* Put the leftovers in our buffer (ownership transfered). */ /* Put the leftovers in our buffer (ownership transfered). */
if (has_left_overs_in_current_slice) { if (has_left_overs_in_current_slice) {
grpc_slice_buffer_add( grpc_slice tail = grpc_slice_split_tail(&h->args->read_buffer->slices[i],
&h->left_overs, consumed_slice_size);
grpc_slice_split_tail(&h->args->read_buffer->slices[i], grpc_slice_buffer_add(&h->left_overs, tail);
consumed_slice_size));
/* split_tail above increments refcount. */ /* split_tail above increments refcount. */
grpc_slice_unref_internal(exec_ctx, h->args->read_buffer->slices[i]); grpc_slice_unref_internal(exec_ctx, tail);
} }
grpc_slice_buffer_addn( grpc_slice_buffer_addn(
&h->left_overs, &h->args->read_buffer->slices[i + 1], &h->left_overs, &h->args->read_buffer->slices[i + 1],

Loading…
Cancel
Save