diff options
author | yang-g <yangg@google.com> | 2017-04-04 10:04:18 -0700 |
---|---|---|
committer | yang-g <yangg@google.com> | 2017-04-04 10:04:18 -0700 |
commit | 61d02025b55030cdae26a72b001748af2a0d1424 (patch) | |
tree | 5b4362b036d329987650035d3c5ca97445ac1b25 /src/core/lib/security | |
parent | f2ceefb9e2a37bb87ff74c90e94ae1d2910f6c40 (diff) |
Unref the tail, not the original slice
Diffstat (limited to 'src/core/lib/security')
-rw-r--r-- | src/core/lib/security/transport/security_handshaker.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/core/lib/security/transport/security_handshaker.c b/src/core/lib/security/transport/security_handshaker.c index 2f39327670..509b4b556d 100644 --- a/src/core/lib/security/transport/security_handshaker.c +++ b/src/core/lib/security/transport/security_handshaker.c @@ -287,12 +287,11 @@ static void on_handshake_data_received_from_peer(grpc_exec_ctx *exec_ctx, if (num_left_overs > 0) { /* Put the leftovers in our buffer (ownership transfered). */ if (has_left_overs_in_current_slice) { - grpc_slice_buffer_add( - &h->left_overs, - grpc_slice_split_tail(&h->args->read_buffer->slices[i], - consumed_slice_size)); + grpc_slice tail = grpc_slice_split_tail(&h->args->read_buffer->slices[i], + consumed_slice_size); + grpc_slice_buffer_add(&h->left_overs, tail); /* 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( &h->left_overs, &h->args->read_buffer->slices[i + 1], |