diff options
author | Craig Tiller <ctiller@google.com> | 2016-07-24 13:00:57 -0700 |
---|---|---|
committer | Craig Tiller <ctiller@google.com> | 2016-07-24 13:00:57 -0700 |
commit | 3e426718f05343d064fe998578acea6eaa7df622 (patch) | |
tree | 0300e954d716a2eaac5bc94a487d25162c991c6b /src/core/lib/support | |
parent | 2da58cf638805764e0ce4d2dfe484604c0cda343 (diff) | |
parent | da9af3331ce0d64635aa395cb6f0a164c848bea7 (diff) |
Merge github.com:grpc/grpc into grand-unified-closures
Diffstat (limited to 'src/core/lib/support')
-rw-r--r-- | src/core/lib/support/slice.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/core/lib/support/slice.c b/src/core/lib/support/slice.c index b9a7c77bda..8a2c0a9086 100644 --- a/src/core/lib/support/slice.c +++ b/src/core/lib/support/slice.c @@ -94,14 +94,16 @@ static void new_slice_unref(void *p) { } } -gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *)) { +gpr_slice gpr_slice_new_with_user_data(void *p, size_t len, + void (*destroy)(void *), + void *user_data) { gpr_slice slice; new_slice_refcount *rc = gpr_malloc(sizeof(new_slice_refcount)); gpr_ref_init(&rc->refs, 1); rc->rc.ref = new_slice_ref; rc->rc.unref = new_slice_unref; rc->user_destroy = destroy; - rc->user_data = p; + rc->user_data = user_data; slice.refcount = &rc->rc; slice.data.refcounted.bytes = p; @@ -109,6 +111,11 @@ gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *)) { return slice; } +gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *)) { + /* Pass "p" to *destroy when the slice is no longer needed. */ + return gpr_slice_new_with_user_data(p, len, destroy, p); +} + /* gpr_slice_new_with_len support structures - we create a refcount object extended with the user provided data pointer & destroy function */ typedef struct new_with_len_slice_refcount { |