diff options
author | Craig Tiller <ctiller@google.com> | 2015-06-25 09:00:34 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2015-06-25 09:00:34 -0700 |
commit | 3b1847c5283c3776ca700fb5ee56c894e68d970b (patch) | |
tree | 592027466cdf3d49cc4d790804b7873d2245c968 /src/core/transport/stream_op.c | |
parent | 4b62811032b12e988ca320e43b41c3bda7834869 (diff) | |
parent | 48f0a13f3872876787f4d7588b396db914319b1b (diff) |
Merge branch 'oops-i-split-it-again' into tis-but-thy-name
Diffstat (limited to 'src/core/transport/stream_op.c')
-rw-r--r-- | src/core/transport/stream_op.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/core/transport/stream_op.c b/src/core/transport/stream_op.c index 0a01598bd9..81df5455f6 100644 --- a/src/core/transport/stream_op.c +++ b/src/core/transport/stream_op.c @@ -65,7 +65,7 @@ void grpc_sopb_swap(grpc_stream_op_buffer *a, grpc_stream_op_buffer *b) { if (a->ops == a->inlined_ops) { if (b->ops == b->inlined_ops) { /* swap contents of inlined buffer */ - gpr_slice temp[GRPC_SOPB_INLINE_ELEMENTS]; + grpc_stream_op temp[GRPC_SOPB_INLINE_ELEMENTS]; memcpy(temp, a->ops, b->nops * sizeof(grpc_stream_op)); memcpy(a->ops, b->ops, a->nops * sizeof(grpc_stream_op)); memcpy(b->ops, temp, b->nops * sizeof(grpc_stream_op)); @@ -163,6 +163,18 @@ void grpc_sopb_append(grpc_stream_op_buffer *sopb, grpc_stream_op *ops, sopb->nops = new_nops; } +void grpc_sopb_move_to(grpc_stream_op_buffer *src, grpc_stream_op_buffer *dst) { + if (src->nops == 0) { + return; + } + if (dst->nops == 0) { + grpc_sopb_swap(src, dst); + return; + } + grpc_sopb_append(dst, src->ops, src->nops); + src->nops = 0; +} + static void assert_valid_list(grpc_mdelem_list *list) { #ifndef NDEBUG grpc_linked_mdelem *l; |