diff options
author | 2016-07-27 15:52:46 +0000 | |
---|---|---|
committer | 2016-07-27 15:52:46 +0000 | |
commit | 05d73af3d18ec301d2778f343edd1cae7d4acd1a (patch) | |
tree | a15737128bd797bf474cba9cff8773253ba85723 /src/core/lib | |
parent | 898d84d309ede54c19c29e18a3d78546b3168323 (diff) |
Fixed asan failure and some refcounting bugs.
Diffstat (limited to 'src/core/lib')
-rw-r--r-- | src/core/lib/channel/channel_stack.c | 9 | ||||
-rw-r--r-- | src/core/lib/channel/connected_channel.c | 2 | ||||
-rw-r--r-- | src/core/lib/surface/call.c | 2 |
3 files changed, 9 insertions, 4 deletions
diff --git a/src/core/lib/channel/channel_stack.c b/src/core/lib/channel/channel_stack.c index 70062e0c3b..7fcc0ef97f 100644 --- a/src/core/lib/channel/channel_stack.c +++ b/src/core/lib/channel/channel_stack.c @@ -189,8 +189,13 @@ grpc_error *grpc_call_stack_init(grpc_exec_ctx *exec_ctx, call_elems[i].call_data = user_data; grpc_error *error = call_elems[i].filter->init_call_elem(exec_ctx, &call_elems[i], &args); - if (error != GRPC_ERROR_NONE && first_error == GRPC_ERROR_NONE) - first_error = error; + if (error != GRPC_ERROR_NONE) { + if (first_error == GRPC_ERROR_NONE) { + first_error = error; + } else { + GRPC_ERROR_UNREF(error); + } + } user_data += ROUND_UP_TO_ALIGNMENT_SIZE(call_elems[i].filter->sizeof_call_data); } diff --git a/src/core/lib/channel/connected_channel.c b/src/core/lib/channel/connected_channel.c index ecafcc99c7..bad1c50a71 100644 --- a/src/core/lib/channel/connected_channel.c +++ b/src/core/lib/channel/connected_channel.c @@ -90,7 +90,7 @@ static grpc_error *init_call_elem(grpc_exec_ctx *exec_ctx, exec_ctx, chand->transport, TRANSPORT_STREAM_FROM_CALL_DATA(calld), &args->call_stack->refcount, args->server_transport_data); return r == 0 ? GRPC_ERROR_NONE - : GRPC_ERROR_CREATE("transport initialization failed"); + : GRPC_ERROR_CREATE("transport stream initialization failed"); } static void set_pollset_or_pollset_set(grpc_exec_ctx *exec_ctx, diff --git a/src/core/lib/surface/call.c b/src/core/lib/surface/call.c index 345698092a..b3bf1427a3 100644 --- a/src/core/lib/surface/call.c +++ b/src/core/lib/surface/call.c @@ -274,7 +274,7 @@ grpc_call *grpc_call_create( grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION); close_with_status(&exec_ctx, call, (grpc_status_code)status, error_str == NULL ? "unknown error" : error_str); - grpc_error_unref(error); + GRPC_ERROR_UNREF(error); } if (cq != NULL) { GPR_ASSERT( |